@@ -8,7 +8,7 @@ const cachedMessages = new Map();
8
8
let _locale = DEFAULT_LOCALE ;
9
9
let _localeData = defaultLocaleData ;
10
10
11
- function findLocale ( ) {
11
+ function findLocale ( locale ) {
12
12
const locales = ( ( ) => {
13
13
if ( navigator . languages ) {
14
14
return [ ...navigator . languages ] ;
@@ -21,25 +21,23 @@ function findLocale() {
21
21
}
22
22
} ) ( ) ;
23
23
24
- const preferences = window . APP . store . state . preferences ;
25
-
26
- if ( preferences . locale && preferences . locale !== "browser" ) {
27
- locales . unshift ( preferences . locale ) ;
24
+ if ( locale && locale !== "browser" ) {
25
+ locales . unshift ( locale ) ;
28
26
}
29
27
30
28
for ( let i = 0 ; i < locales . length ; i ++ ) {
31
- const locale = locales [ i ] ;
32
- if ( AVAILABLE_LOCALES . hasOwnProperty ( locale ) ) {
33
- return locale ;
29
+ const curLocale = locales [ i ] ;
30
+ if ( AVAILABLE_LOCALES . hasOwnProperty ( curLocale ) ) {
31
+ return curLocale ;
34
32
}
35
- if ( FALLBACK_LOCALES . hasOwnProperty ( locale ) ) {
36
- FALLBACK_LOCALES . hasOwnProperty ( locale ) ;
33
+ if ( FALLBACK_LOCALES . hasOwnProperty ( curLocale ) ) {
34
+ FALLBACK_LOCALES . hasOwnProperty ( curLocale ) ;
37
35
}
38
36
// Also check the primary language subtag in case
39
37
// we do not have an entry for full tag
40
38
// See https://en.wikipedia.org/wiki/IETF_language_tag#Syntax_of_language_tags
41
39
// and https://github.com/mozilla/hubs/pull/3350/files#diff-70ef5717d3da03ef288e8d15c2fda32c5237d7f37074421496f22403e4475bf1R16
42
- const primaryLanguageSubtag = locale . split ( "-" ) [ 0 ] . toLowerCase ( ) ;
40
+ const primaryLanguageSubtag = curLocale . split ( "-" ) [ 0 ] . toLowerCase ( ) ;
43
41
if ( AVAILABLE_LOCALES . hasOwnProperty ( primaryLanguageSubtag ) ) {
44
42
return primaryLanguageSubtag ;
45
43
}
@@ -50,20 +48,20 @@ function findLocale() {
50
48
return DEFAULT_LOCALE ;
51
49
}
52
50
53
- function updateLocale ( ) {
54
- const locale = findLocale ( ) ;
51
+ export function setLocale ( locale ) {
52
+ const resolvedLocale = findLocale ( locale ) ;
55
53
56
- if ( locale === DEFAULT_LOCALE ) {
57
- _locale = locale ;
54
+ if ( resolvedLocale === DEFAULT_LOCALE ) {
55
+ _locale = resolvedLocale ;
58
56
_localeData = defaultLocaleData ;
59
57
document . body . dispatchEvent ( new CustomEvent ( "locale-updated" ) ) ;
60
58
} else {
61
- if ( cachedMessages . has ( locale ) ) {
62
- _locale = locale ;
59
+ if ( cachedMessages . has ( resolvedLocale ) ) {
60
+ _locale = resolvedLocale ;
63
61
document . body . dispatchEvent ( new CustomEvent ( "locale-updated" ) ) ;
64
62
} else {
65
- import ( `../assets/locales/${ locale } .json` ) . then ( ( { default : localeData } ) => {
66
- _locale = locale ;
63
+ import ( `../assets/locales/${ resolvedLocale } .json` ) . then ( ( { default : localeData } ) => {
64
+ _locale = resolvedLocale ;
67
65
_localeData = localeData ;
68
66
document . body . dispatchEvent ( new CustomEvent ( "locale-updated" ) ) ;
69
67
} ) ;
@@ -74,9 +72,9 @@ function updateLocale() {
74
72
const interval = window . setInterval ( ( ) => {
75
73
if ( window . APP && window . APP . store ) {
76
74
window . clearInterval ( interval ) ;
77
- updateLocale ( ) ;
75
+ setLocale ( window . APP . store . state . preferences . locale ) ;
78
76
window . APP . store . addEventListener ( "statechanged" , ( ) => {
79
- updateLocale ( ) ;
77
+ setLocale ( window . APP . store . state . preferences . locale ) ;
80
78
} ) ;
81
79
}
82
80
} , 100 ) ;
0 commit comments