From b9fff25b8ecb0aad18aa7d7f7b853cc5527f1c00 Mon Sep 17 00:00:00 2001 From: Adrien Hopkins Date: Fri, 29 Jul 2022 13:56:46 -0500 Subject: If regional locale not found, uses language locale instead (e.g. uses en if en-US is not available) --- src/lib/i18n.js | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'src') 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, }); -- cgit v1.2.3