diff options
| -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, }); |
