From 121c74ed73f2a316b72ac463210a73c9dea3317b Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Tue, 30 Sep 2025 21:27:37 +0200 Subject: [PATCH] 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. --- src/base/utils/Languages.ts | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/src/base/utils/Languages.ts b/src/base/utils/Languages.ts index 413cdfa9..e801e132 100644 --- a/src/base/utils/Languages.ts +++ b/src/base/utils/Languages.ts @@ -29,36 +29,29 @@ const DEFAULT_LANGUAGE_TO_TRANSLATION: Record = 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);