diff --git a/app/scripts/lib/get-first-preferred-lang-code.js b/app/scripts/lib/get-first-preferred-lang-code.js index bcac7937a..5cd028e91 100644 --- a/app/scripts/lib/get-first-preferred-lang-code.js +++ b/app/scripts/lib/get-first-preferred-lang-code.js @@ -38,9 +38,23 @@ export default async function getFirstPreferredLangCode() { userPreferredLocaleCodes = []; } - const firstPreferredLangCode = userPreferredLocaleCodes + let firstPreferredLangCode = userPreferredLocaleCodes .map((code) => code.toLowerCase().replace('_', '-')) - .find((code) => existingLocaleCodes[code] !== undefined); + .find( + (code) => + existingLocaleCodes[code] !== undefined || + existingLocaleCodes[code.split('-')[0]] !== undefined, + ); + + // if we have matched against a code with a '-' present, meaning its a regional + // code for which we have a non-regioned locale, we need to set firstPreferredLangCode + // to the correct non-regional code. + if ( + firstPreferredLangCode !== undefined && + existingLocaleCodes[firstPreferredLangCode] === undefined + ) { + firstPreferredLangCode = firstPreferredLangCode.split('-')[0]; + } return existingLocaleCodes[firstPreferredLangCode] || 'en'; }