aboutsummaryrefslogtreecommitdiff
path: root/src/language.js
blob: 6009c20bcd173fffbc16342101732846802d523d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import { writable, derived, get } from "svelte/store";
import translations from './translations.js';
import { leftPanelUpdateLang } from "./left_panel.js";

let defaultLanguage = 'english';
const userLang = (navigator.language || navigator.userLanguage).toLowerCase();
if (userLang.startsWith('zh')) {
    defaultLanguage = 'chinese';
}
if (userLang.startsWith('ja')) {
    defaultLanguage = 'japanese';
}
let language = writable(defaultLanguage);
let languageState = defaultLanguage;

function setLanguage(newLanguage) {
    localStorage.setItem('language', newLanguage);
    languageState = newLanguage;
    language.set(newLanguage);
    leftPanelUpdateLang(get(currentTranslations).key);
}

function initLanguage() {
    let cachedLanguage = localStorage.getItem('language');
    if (cachedLanguage !== null) {
        setLanguage(cachedLanguage);
    }
}

const currentTranslations = derived(language, ($language) => {
    return translations[$language] || translations.chinese;
});

export {
    language,
    languageState,
    setLanguage,
    initLanguage,
    currentTranslations,
};