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 | 3f38c4419d6b9264ab6489c4af84662ab3049387 (patch) | |
| tree | c1867f126f192cc9ab4adbe7cd921796ca4f5f86 /src/lib | |
| parent | 5f4be6b589eb53be7a15433daaa5d1e9036b9509 (diff) | |
| download | coinos-ui-3f38c4419d6b9264ab6489c4af84662ab3049387.tar.gz coinos-ui-3f38c4419d6b9264ab6489c4af84662ab3049387.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, }); |
