Parcourir la source

refactor: get language (#4922)

* refactor: get language
Lloyd Zhou il y a 1 an
Parent
commit
8cb204e22e
1 fichiers modifiés avec 12 ajouts et 10 suppressions
  1. 12 10
      app/locales/index.ts

+ 12 - 10
app/locales/index.ts

@@ -97,7 +97,17 @@ function setItem(key: string, value: string) {
 
 function getLanguage() {
   try {
-    return navigator.language.toLowerCase();
+    const locale = new Intl.Locale(navigator.language).maximize();
+    const region = locale?.region?.toLowerCase();
+    // 1. check region code in ALL_LANGS
+    if (AllLangs.includes(region as Lang)) {
+      return region as Lang;
+    }
+    // 2. check language code in ALL_LANGS
+    if (AllLangs.includes(locale.language as Lang)) {
+      return locale.language as Lang;
+    }
+    return DEFAULT_LANG;
   } catch {
     return DEFAULT_LANG;
   }
@@ -110,15 +120,7 @@ export function getLang(): Lang {
     return savedLang as Lang;
   }
 
-  const lang = getLanguage();
-
-  for (const option of AllLangs) {
-    if (lang.includes(option)) {
-      return option;
-    }
-  }
-
-  return DEFAULT_LANG;
+  return getLanguage();
 }
 
 export function changeLang(lang: Lang) {