diff options
| author | Adrien Hopkins <[email protected]> | 2022-07-29 13:56:46 -0500 |
|---|---|---|
| committer | Adrien Hopkins <[email protected]> | 2022-07-29 13:56:46 -0500 |
| commit | b9fff25b8ecb0aad18aa7d7f7b853cc5527f1c00 (patch) | |
| tree | 716cc91cc2abf1485bb44c3524ca78a26bb6d2aa /src/lib | |
| parent | b57597a0487ea5d6451ea43c32d083df40fd9353 (diff) | |
| download | coinos-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)
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/i18n.js | 27 |
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, }); |
