@@ -14,20 +14,24 @@ export const i18nModule = createI18n({
1414export const i18n = i18nModule . global ;
1515
1616export 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
3337export 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