File tree 1 file changed +29
-9
lines changed
1 file changed +29
-9
lines changed Original file line number Diff line number Diff line change @@ -26,17 +26,35 @@ export default class BaseI18nPlugin extends BasePlugin
26
26
* @returns {object } The language configuration
27
27
*/
28
28
locale ( locale ) {
29
- if ( ! locale ) {
30
- locale = this . options . locale ;
29
+ return this . constructor . locales [ this . getLocale ( locale ) ] ;
30
+ }
31
31
32
- if ( ! locale ) {
33
- if ( undefined === globalLocale ) {
34
- let lang = document . querySelector ( 'html' ) . lang ;
35
- globalLocale = lang ? lang : null ;
36
- }
32
+ /**
33
+ * Get the valid available locale.
34
+ *
35
+ * @param {string } [locale] The ISO code of language
36
+ *
37
+ * @returns {object } The language configuration
38
+ */
39
+ getLocale ( locale ) {
40
+ locale = locale ? locale : this . options . locale ;
41
+
42
+ if ( this . constructor . locales [ locale ] ) {
43
+ return locale ;
44
+ }
45
+
46
+ if ( ! locale ) {
47
+ if ( undefined === globalLocale ) {
48
+ let metaLang = document . querySelector ( 'head > meta[http-equiv="Content-Language"]' ) ;
49
+ globalLocale = metaLang && metaLang . content ? metaLang . content : null ;
50
+ }
37
51
38
- locale = globalLocale ;
52
+ if ( undefined === globalLocale ) {
53
+ let lang = document . querySelector ( 'html' ) . lang ;
54
+ globalLocale = lang ? lang : null ;
39
55
}
56
+
57
+ locale = globalLocale ;
40
58
}
41
59
42
60
if ( typeof locale === 'string' ) {
@@ -52,7 +70,9 @@ export default class BaseI18nPlugin extends BasePlugin
52
70
locale = localeKeys . length > 0 ? localeKeys [ 0 ] : 'en' ;
53
71
}
54
72
55
- return this . constructor . locales [ locale ] ;
73
+ this . options . locale = locale ;
74
+
75
+ return locale ;
56
76
}
57
77
58
78
/**
You can’t perform that action at this time.
0 commit comments