diff --git a/src/i18n.js b/src/i18n.js index 77beba5b..0fa0520a 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -66,7 +66,7 @@ export function currentLocale() { const potentialLocales = [ localStorage.locale, navigator.language, ...navigator.languages ]; const availableLocales = potentialLocales .filter(l => !!l) - .map(l => l.substring(0, 2) in messages ? l.substring(0, 2) : l) + .map(l => l.split("-")[0] in messages ? l.split("-")[0] : l) .filter(l => l in messages); return availableLocales[0] || "en"; } diff --git a/test/cypress/unit/i18n.spec.js b/test/cypress/unit/i18n.spec.js index cb0d1f64..c8352a76 100644 --- a/test/cypress/unit/i18n.spec.js +++ b/test/cypress/unit/i18n.spec.js @@ -46,6 +46,12 @@ describe("Test i18n.js", () => { setLanguages(['abc', 'en-US', 'pl', 'ja']); expect(currentLocale()).equal("en"); + setLanguages(['fil-PH', 'pl']); + expect(currentLocale()).equal("pl"); + + setLanguages(['shi-Latn-MA', 'pl']); + expect(currentLocale()).equal("pl"); + setLanguages(['pl']); localStorage.locale = "ja-ZZ"; expect(currentLocale()).equal("ja");