From 072226bde25616d2dafb015eb66278c6add15bf0 Mon Sep 17 00:00:00 2001 From: Ionys <9364594+Ionys320@users.noreply.github.com> Date: Sun, 22 Jun 2025 01:02:52 +0200 Subject: [PATCH] Improve i18n language matching (#5939) --- src/i18n.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/i18n.js b/src/i18n.js index bd7e3a122..3f4e98de3 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -75,11 +75,20 @@ export function currentLocale() { if (locale in messages) { return locale; } - // some locales are further specified such as "en-US". - // If we only have a generic locale for this, we can use it too - const genericLocale = locale.split("-")[0]; - if (genericLocale in messages) { - return genericLocale; + // If the locale is a 2-letter code, we can try to find a regional variant + // e.g. "fr" may not be in the messages, but "fr-FR" is + if (locale.length === 2) { + const regionalLocale = `${locale}-${locale.toUpperCase()}`; + if (regionalLocale in messages) { + return regionalLocale; + } + } else { + // Some locales are further specified such as "en-US". + // If we only have a generic locale for this, we can use it too + const genericLocale = locale.slice(0, 2); + if (genericLocale in messages) { + return genericLocale; + } } } return "en";