[WEB-4166] improvement: update logic to merge extended translations (#3283)

This commit is contained in:
Prateek Shourya
2025-05-28 01:41:21 +05:30
committed by GitHub
parent f6fb7b6a63
commit beca128d62
2 changed files with 3 additions and 60 deletions

View File

@@ -31,6 +31,7 @@ export const SUPPORTED_LANGUAGES: ILanguageOption[] = [
export enum ETranslationFiles {
TRANSLATIONS = "translations",
ACCESSIBILITY = "accessibility",
TRANSLATIONS_EXTENDED = "translations-extended",
}
export const LANGUAGE_STORAGE_KEY = "userLanguage";

View File

@@ -117,18 +117,10 @@ export class TranslationStore {
if (this.loadedLanguages.has(language)) return;
try {
const [translations, translationsExtended] = await Promise.all([
this.importLanguageFile(language),
this.importLanguageFileExtended(language),
]);
const translations = await this.importLanguageFile(language);
runInAction(() => {
// Use lodash merge for deep merging
this.translations[language] = merge(
{},
this.coreTranslations[language] || {},
translations.default,
translationsExtended.default
);
this.translations[language] = merge({}, this.coreTranslations[language] || {}, translations.default);
// Add to loaded languages
this.loadedLanguages.add(language);
// Clear cache
@@ -167,56 +159,6 @@ export class TranslationStore {
return this.importAndMergeFiles(language, files);
}
/**
* Imports the extended translations for the given language
* @param language - The language to import the translations for
* @returns {Promise<any>}
*/
private importLanguageFileExtended(language: TLanguage): Promise<any> {
switch (language) {
case "en":
return import("../locales/en/translations-extended.json");
case "fr":
return import("../locales/fr/translations-extended.json");
case "es":
return import("../locales/es/translations-extended.json");
case "ja":
return import("../locales/ja/translations-extended.json");
case "zh-CN":
return import("../locales/zh-CN/translations-extended.json");
case "zh-TW":
return import("../locales/zh-TW/translations-extended.json");
case "ru":
return import("../locales/ru/translations-extended.json");
case "it":
return import("../locales/it/translations-extended.json");
case "cs":
return import("../locales/cs/translations-extended.json");
case "sk":
return import("../locales/sk/translations-extended.json");
case "de":
return import("../locales/de/translations-extended.json");
case "ua":
return import("../locales/ua/translations-extended.json");
case "pl":
return import("../locales/pl/translations-extended.json");
case "ko":
return import("../locales/ko/translations-extended.json");
case "id":
return import("../locales/id/translations-extended.json");
case "ro":
return import("../locales/ro/translations-extended.json");
case "pt-BR":
return import("../locales/pt-BR/translations-extended.json");
case "vi-VN":
return import("../locales/vi-VN/translations-extended.json");
case "tr-TR":
return import("../locales/tr-TR/translations-extended.json");
default:
throw new Error(`Unsupported language: ${language}`);
}
}
/** Checks if the language is valid based on the supported languages */
private isValidLanguage(lang: string | null): lang is TLanguage {
return lang !== null && this.availableLanguages.some((l) => l.value === lang);