itizawa 4 лет назад
Родитель
Сommit
78b8ec84db

+ 1 - 2
resource/locales/en_US/meta.json

@@ -1,5 +1,4 @@
 {
   "id": "en_US",
-  "displayName": "English",
-  "browserLanguageId": "en"
+  "displayName": "English"
 }

+ 1 - 2
resource/locales/ja_JP/meta.json

@@ -1,5 +1,4 @@
 {
   "id": "ja_JP",
-  "displayName": "日本語",
-  "browserLanguageId": "ja"
+  "displayName": "日本語"
 }

+ 2 - 3
resource/locales/zh_CN/meta.json

@@ -1,5 +1,4 @@
 {
 	"id": "zh_CN",
-	"displayName": "简体中文",
-  "userLanguage":"cn"
-}
+	"displayName": "简体中文"
+}

+ 8 - 7
src/client/js/util/i18n.js

@@ -7,6 +7,12 @@ import locales from '@root/resource/locales';
 // extract metadata list from 'resource/locales/${locale}/meta.json'
 export const localeMetadatas = Object.values(locales).map(locale => locale.meta);
 
+const browserLanguageIdMapping = {
+  zh: 'zh_CN',
+  ja: 'ja_JP',
+  en: 'en_US',
+};
+
 export const i18nFactory = (userLocaleId) => {
   // setup LanguageDetector
   const langDetector = new LanguageDetector();
@@ -40,13 +46,8 @@ export const i18nFactory = (userLocaleId) => {
       if (found.length === 0) {
         return undefined;
       }
-
-      // detect id from browserLanguageId
-      const foundedLanguage = localeMetadatas.find(v => v.browserLanguageId === found[0]);
-      if (foundedLanguage == null) {
-        return undefined;
-      }
-      return foundedLanguage.id;
+      // detect id from browserLanguageIdMapping
+      return browserLanguageIdMapping[found.find(v => Object.keys(browserLanguageIdMapping).includes(v))];
     },
   });