add fallback language to first match if language not avaiable
This commit is contained in:
@@ -24,10 +24,27 @@ for (const path in modules) {
|
||||
messages[locale] = parsed;
|
||||
}
|
||||
|
||||
function resolveLocale(desiredLocale) {
|
||||
if (messages[desiredLocale]) return desiredLocale;
|
||||
|
||||
const baseLang = desiredLocale.split('-')[0];
|
||||
// exact base match (e.g. en)
|
||||
if (messages[baseLang]) return baseLang;
|
||||
|
||||
// first locale starting with that base (e.g. en-US, en-GB)
|
||||
const partialMatch = Object.keys(messages).find((l) => l.startsWith(baseLang));
|
||||
if (partialMatch) return partialMatch;
|
||||
|
||||
// fallback to English or the first available
|
||||
return messages['en'] ? 'en' : Object.keys(messages)[0];
|
||||
}
|
||||
|
||||
const selectedLocale = resolveLocale(savedLang || systemLocale);
|
||||
|
||||
const i18n = createI18n({
|
||||
legacy: false, // Composition API mode
|
||||
locale: savedLang || systemLocale,
|
||||
fallbackLocale: systemLocale,
|
||||
locale: selectedLocale,
|
||||
fallbackLocale: resolveLocale(selectedLocale),
|
||||
messages,
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user