Fix source iso language detection

Caused issue for some languages, e.g., for all the different chinese languages, which are not all specified in the "IsoLanguages". These languages all incorrectly used the standard native chinese name which resulted in multiple different source groups with the same group name.
This commit is contained in:
schroda
2025-09-30 21:27:37 +02:00
parent 29e3f64527
commit 121c74ed73

View File

@@ -29,36 +29,29 @@ const DEFAULT_LANGUAGE_TO_TRANSLATION: Record<DefaultLanguage, TranslationKey> =
type LanguageObject = ISOLanguage & { orgCode: string; isoCode: string };
function getISOLanguage(code: string): LanguageObject | null {
function getISOLanguageFor(code: string, orgCode: string = code, isoCode: string = code): LanguageObject | null {
if (IsoLanguages[code]) {
return {
...IsoLanguages[code],
orgCode: code,
isoCode: code,
};
}
if (IsoLanguages[code.toLocaleLowerCase()]) {
return {
...IsoLanguages[code.toLocaleLowerCase()],
orgCode: code,
isoCode: code.toLocaleLowerCase(),
};
}
const whereToCut = code.indexOf('-') !== -1 ? code.indexOf('-') : code.length;
const processedCode = code.toLocaleLowerCase().substring(0, whereToCut);
if (IsoLanguages[processedCode]) {
return {
...IsoLanguages[processedCode],
orgCode: code,
isoCode: processedCode,
orgCode,
isoCode,
};
}
return null;
}
function getISOLanguage(code: string): LanguageObject | null {
return (
getISOLanguageFor(code) ??
getISOLanguageFor(code.toLowerCase(), code) ??
getISOLanguageFor(code.replace('-', '_'), code) ??
getISOLanguageFor(code.replace('_', '-'), code) ??
getISOLanguageFor(code.split('-')[0], code) ??
getISOLanguageFor(code.split('_')[0], code)
);
}
export function getLanguage(code: string): LanguageObject {
const isoLanguage = getISOLanguage(code);