From 22378e4f72b0622be6eadbacec1b542961ed3d25 Mon Sep 17 00:00:00 2001 From: Alex Donesky Date: Tue, 19 Oct 2021 14:32:13 -0500 Subject: [PATCH] fix issue where regional locales are not matched against our locales list (#12403) * fix issue where regional locales are not matched against our locales list --- .../lib/get-first-preferred-lang-code.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) 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'; }