aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdrien Hopkins <[email protected]>2022-07-29 13:56:46 -0500
committerAdrien Hopkins <[email protected]>2022-07-29 13:56:46 -0500
commitb9fff25b8ecb0aad18aa7d7f7b853cc5527f1c00 (patch)
tree716cc91cc2abf1485bb44c3524ca78a26bb6d2aa
parentb57597a0487ea5d6451ea43c32d083df40fd9353 (diff)
downloadcoinos-ui-b9fff25b8ecb0aad18aa7d7f7b853cc5527f1c00.tar.gz
coinos-ui-b9fff25b8ecb0aad18aa7d7f7b853cc5527f1c00.zip
If regional locale not found, uses language locale instead
(e.g. uses en if en-US is not available)
-rw-r--r--src/lib/i18n.js27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/lib/i18n.js b/src/lib/i18n.js
index e0387fb4..2d44a767 100644
--- a/src/lib/i18n.js
+++ b/src/lib/i18n.js
@@ -9,7 +9,32 @@ function addLocale(localeCode) {
}
localeCodes.forEach(addLocale);
+// determine locale
+function pickLocale(navigatorLocale, availableLocales) {
+ // determine langugage part of locale
+ // (e.g. if navigatorLocale is 'en-US', languageCode is 'en')
+ let dashIndex = navigatorLocale ? navigatorLocale.indexOf("-") : -1;
+ let languageCode; // navigator locale without the regional part
+ if (dashIndex === -1) {
+ languageCode = navigatorLocale;
+ } else {
+ languageCode = navigatorLocale.slice(0, dashIndex);
+ }
+
+ // get locale
+ if (availableLocales.includes(navigatorLocale)) {
+ return navigatorLocale;
+ } else if (availableLocales.includes(languageCode)) {
+ return languageCode;
+ } else {
+ return null;
+ }
+}
+
+let initialLocale = pickLocale(getLocaleFromNavigator(), localeCodes);
+console.log("Selected locale '" + initialLocale + "'");
+
init({
fallbackLocale: 'en',
- initialLocale: getLocaleFromNavigator(),
+ initialLocale: initialLocale,
});