From 35c7f156dbb4855c23d791af71702c7b4bb28554 Mon Sep 17 00:00:00 2001 From: lala Date: Sun, 6 Jun 2021 15:22:13 +0800 Subject: [PATCH] fix(i18n): LocaleDetector should consider the language tag --- .../java/org/jitsi/meet/sdk/LocaleDetector.java | 4 ++-- react/features/base/i18n/languageDetector.native.js | 13 +++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/android/sdk/src/main/java/org/jitsi/meet/sdk/LocaleDetector.java b/android/sdk/src/main/java/org/jitsi/meet/sdk/LocaleDetector.java index 90766f322..73b5a8683 100644 --- a/android/sdk/src/main/java/org/jitsi/meet/sdk/LocaleDetector.java +++ b/android/sdk/src/main/java/org/jitsi/meet/sdk/LocaleDetector.java @@ -47,7 +47,7 @@ class LocaleDetector extends ReactContextBaseJavaModule { public Map getConstants() { Context context = getReactApplicationContext(); HashMap constants = new HashMap<>(); - constants.put("locale", context.getResources().getConfiguration().locale.toString()); + constants.put("locale", context.getResources().getConfiguration().locale.toLanguageTag()); return constants; } @@ -55,4 +55,4 @@ class LocaleDetector extends ReactContextBaseJavaModule { public String getName() { return "LocaleDetector"; } -} \ No newline at end of file +} diff --git a/react/features/base/i18n/languageDetector.native.js b/react/features/base/i18n/languageDetector.native.js index b28e8037e..01ccbbf27 100644 --- a/react/features/base/i18n/languageDetector.native.js +++ b/react/features/base/i18n/languageDetector.native.js @@ -20,8 +20,17 @@ export default { detect() { const { LocaleDetector } = NativeModules; - const [ lang, region ] = LocaleDetector.locale.replace(/_/, '-').split('-'); - const locale = `${lang}${region}`; + const parts = LocaleDetector.locale.replace(/_/, '-').split('-'); + const [ lang, regionOrScript, region ] = parts; + let locale; + + if (parts.length >= 3) { + locale = `${lang}${region}`; + } else if (parts.length === 2) { + locale = `${lang}${regionOrScript}`; + } else { + locale = lang; + } if (LANGUAGES.includes(locale)) { return locale;