fix: improve locale matching for regional variants in currentLocale function

This commit is contained in:
Ionys 2025-06-21 23:08:38 +02:00
parent 5aeda2dab0
commit 8088375c83

View file

@ -75,13 +75,22 @@ export function currentLocale() {
if (locale in messages) { if (locale in messages) {
return locale; return locale;
} }
// some locales are further specified such as "en-US". // 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 // If we only have a generic locale for this, we can use it too
const genericLocale = locale.split("-")[0]; const genericLocale = locale.slice(0, 2);
if (genericLocale in messages) { if (genericLocale in messages) {
return genericLocale; return genericLocale;
} }
} }
}
return "en"; return "en";
} }