Skip to content

Commit af2dad1

Browse files
authored
Fix fallback languages not loading (#631) (#632)
1 parent 7392447 commit af2dad1

File tree

1 file changed

+22
-14
lines changed

1 file changed

+22
-14
lines changed

common/webapp/src/i18n.js

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,24 @@ export const i18nModule = createI18n({
1414
export const i18n = i18nModule.global;
1515

1616
export async function setLanguage(lang) {
17+
loadLanguage(lang);
18+
19+
i18n.locale.value = lang;
20+
21+
document.querySelector('html').setAttribute('lang', lang);
22+
23+
return nextTick();
24+
}
25+
26+
async function loadLanguage(lang) {
1727
try {
18-
if (!i18n.availableLocales.includes(lang)){
28+
if (!i18n.availableLocales.includes(lang)) {
1929
let messages = await fetchHocon(`./lang/${lang}.conf`);
2030
i18n.setLocaleMessage(lang, messages);
2131
}
22-
23-
i18n.locale.value = lang;
24-
25-
document.querySelector('html').setAttribute('lang', lang);
2632
} catch (e) {
2733
console.error(`Failed to load language '${lang}'!`, e);
2834
}
29-
30-
return nextTick();
3135
}
3236

3337
export async function loadLanguageSettings() {
@@ -37,20 +41,24 @@ export async function loadLanguageSettings() {
3741
if (settings.useBrowserLanguage) {
3842
const availableLanguages = settings.languages.map(lang => lang.locale);
3943

40-
for (let browserLanguage of navigator.languages) {
41-
selectedLanguage = availableLanguages.find(lang => lang === browserLanguage);
42-
if (selectedLanguage) break;
44+
for (let browserLanguage of navigator.languages) {
45+
selectedLanguage = availableLanguages.find(lang => lang === browserLanguage);
46+
if (selectedLanguage) break;
4347

44-
let baseBrowserLanguage = browserLanguage.split('-')[0];
45-
selectedLanguage = availableLanguages.find(lang => lang.startsWith(baseBrowserLanguage));
46-
if (selectedLanguage) break;
47-
}
48+
let baseBrowserLanguage = browserLanguage.split('-')[0];
49+
selectedLanguage = availableLanguages.find(lang => lang.startsWith(baseBrowserLanguage));
50+
if (selectedLanguage) break;
51+
}
4852
}
4953

5054
if (!selectedLanguage) {
5155
selectedLanguage = settings.default;
5256
}
5357

58+
await loadLanguage('en');
59+
await loadLanguage(settings.default);
60+
i18nModule.global.fallbackLocale = [settings.default, 'en'];
61+
5462
i18n.languages = settings.languages;
5563
await setLanguage(selectedLanguage);
5664
}

0 commit comments

Comments
 (0)