@@ -16,82 +16,43 @@ import langZh from "./lang/zh.json";
1616// not the country code
1717// Remember when adding to this list, also update check-locales.js script
1818const localeOptions = [
19- [ "en" , "en-US" ] ,
20- [ "de" , "de-DE" ] ,
21- [ "es" , "es-ES" ] ,
22- [ "ja" , "ja-JP" ] ,
23- [ "ru " , "ru-RU" ] ,
24- [ "sk " , "sk-SK" ] ,
25- [ "zh " , "zh-CN" ] ,
26- [ "pl " , "pl-PL" ] ,
27- [ "it " , "it-IT" ] ,
28- [ "vi" , "vi-VN" ] ,
29- [ "nl " , "nl-NL" ] ,
19+ [ "en" , "en-US" , langEn ] ,
20+ [ "de" , "de-DE" , langDe ] ,
21+ [ "es" , "es-ES" , langEs ] ,
22+ [ "ja" , "ja-JP" , langJa ] ,
23+ [ "it " , "it-IT" , langIt ] ,
24+ [ "nl " , "nl-NL" , langNl ] ,
25+ [ "pl " , "pl-PL" , langPl ] ,
26+ [ "ru " , "ru-RU" , langRu ] ,
27+ [ "sk " , "sk-SK" , langSk ] ,
28+ [ "vi" , "vi-VN" , langVi ] ,
29+ [ "zh " , "zh-CN" , langZh ] ,
3030] ;
3131
3232const loadMessages = ( locale ?: string ) : typeof langList & typeof langEn => {
33- const thisLocale = locale || "en" ;
34- switch ( thisLocale . slice ( 0 , 2 ) ) {
35- case "de" :
36- return Object . assign ( { } , langList , langEn , langDe ) ;
37- case "es" :
38- return Object . assign ( { } , langList , langEn , langEs ) ;
39- case "ja" :
40- return Object . assign ( { } , langList , langEn , langJa ) ;
41- case "ru" :
42- return Object . assign ( { } , langList , langEn , langRu ) ;
43- case "sk" :
44- return Object . assign ( { } , langList , langEn , langSk ) ;
45- case "zh" :
46- return Object . assign ( { } , langList , langEn , langZh ) ;
47- case "pl" :
48- return Object . assign ( { } , langList , langEn , langPl ) ;
49- case "it" :
50- return Object . assign ( { } , langList , langEn , langIt ) ;
51- case "vi" :
52- return Object . assign ( { } , langList , langEn , langVi ) ;
53- case "nl" :
54- return Object . assign ( { } , langList , langEn , langNl ) ;
55- default :
56- return Object . assign ( { } , langList , langEn ) ;
33+ const thisLocale = ( locale || "en" ) . slice ( 0 , 2 ) ;
34+
35+ // ensure this lang exists in localeOptions above, otherwise fallback to en
36+ if ( thisLocale === "en" || ! localeOptions . some ( ( [ code ] ) => code === thisLocale ) ) {
37+ return Object . assign ( { } , langList , langEn ) ;
5738 }
39+
40+ return Object . assign ( { } , langList , langEn , localeOptions . find ( ( [ code ] ) => code === thisLocale ) ?. [ 2 ] ) ;
5841} ;
5942
6043const getFlagCodeForLocale = ( locale ?: string ) => {
61- switch ( locale ) {
62- case "es-ES" :
63- case "es" :
64- return "ES" ;
65- case "de-DE" :
66- case "de" :
67- return "DE" ;
68- case "ja-JP" :
69- case "ja" :
70- return "JP" ;
71- case "ru-RU" :
72- case "ru" :
73- return "RU" ;
74- case "sk-SK" :
75- case "sk" :
76- return "SK" ;
77- case "zh" :
78- case "zh-CN" :
79- return "CN" ;
80- case "pl" :
81- case "pl-PL" :
82- return "PL" ;
83- case "it" :
84- case "it-IT" :
85- return "IT" ;
86- case "vi" :
87- case "vi-VN" :
88- return "VN" ;
89- case "nl" :
90- case "nl-NL" :
91- return "NL" ;
92- default :
93- return "EN" ;
44+ const thisLocale = ( locale || "en" ) . slice ( 0 , 2 ) ;
45+
46+ // only add to this if your flag is different from the locale code
47+ const specialCases : Record < string , string > = {
48+ ja : "jp" , // Japan
49+ zh : "cn" , // China
50+ } ;
51+
52+ if ( specialCases [ thisLocale ] ) {
53+ return specialCases [ thisLocale ] . toUpperCase ( ) ;
9454 }
55+ return thisLocale . toUpperCase ( ) ;
9556} ;
9657
9758const getLocale = ( short = false ) => {
@@ -112,10 +73,7 @@ const getLocale = (short = false) => {
11273const cache = createIntlCache ( ) ;
11374
11475const initialMessages = loadMessages ( getLocale ( ) ) ;
115- let intl = createIntl (
116- { locale : getLocale ( ) , messages : initialMessages } ,
117- cache ,
118- ) ;
76+ let intl = createIntl ( { locale : getLocale ( ) , messages : initialMessages } , cache ) ;
11977
12078const changeLocale = ( locale : string ) : void => {
12179 const messages = loadMessages ( locale ) ;
@@ -155,12 +113,6 @@ const T = ({
155113 ) ;
156114} ;
157115
158- export {
159- localeOptions ,
160- getFlagCodeForLocale ,
161- getLocale ,
162- createIntl ,
163- changeLocale ,
164- intl ,
165- T ,
166- } ;
116+ console . log ( "L:" , localeOptions ) ;
117+
118+ export { localeOptions , getFlagCodeForLocale , getLocale , createIntl , changeLocale , intl , T } ;
0 commit comments