fix: obsidian language not set in English, Chinese and Japanese

This commit is contained in:
Jiaxin Peng
2024-09-19 13:47:57 +01:00
parent 00411e9599
commit 8bd8346423
3 changed files with 38 additions and 29 deletions

View File

@@ -8,10 +8,42 @@ export const I18n: {[key: string]:any} = {
ja,
};
export const I18nConfig = (lang: string): any => {
return I18n[lang];
};
class I18nManager {
private currentLanguage: string;
const storedLanguage = window.localStorage.getItem("language");
constructor() {
this.currentLanguage = this.detectLanguage();
}
export const i18nConfig = I18n[storedLanguage || window.navigator.language.split('-')[0] || "en"];
// return the language to use
private detectLanguage(): string {
const storedLanguage = window.localStorage.getItem("language");
if (storedLanguage && this.isLanguageSupported(storedLanguage)) {
console.log(`Using stored language: ${storedLanguage}`);
return storedLanguage;
}
const browserLanguage = window.navigator.language.split("-")[0];
if (this.isLanguageSupported(browserLanguage)) {
console.log(`Using browser language: ${browserLanguage}`);
return browserLanguage;
}
// Default to English if no match is found
console.log("Using default language: en");
return "en";
}
private isLanguageSupported(lang: string): boolean {
return Object.prototype.hasOwnProperty.call(I18n, lang);
}
// Get the i18n configuration for the current language
public getConfig(): any {
return I18n[this.currentLanguage];
}
}
export const i18nManager = new I18nManager();
export const i18nConfig = i18nManager.getConfig();