async loadTranslations()

in packages/bonito-core/src/localization/http-localizer.ts [10:71]


    async loadTranslations(baseUrl: string): Promise<void> {
        const languageMap: Record<string, string> = {
            cs: "cs",
            de: "de",
            en: "en",
            es: "es",
            fr: "fr",
            hu: "hu",
            id: "id",
            it: "it",
            ja: "ja",
            ko: "ko",
            nl: "nl",
            pl: "pl",
            pt: "pt-PT",
            "pt-PT": "pt-PT",
            "pt-BR": "pt-BR",
            ru: "ru",
            sv: "sv",
            tr: "tr",
            zh: "zh-Hans",
            "zh-CN": "zh-Hans",
            "zh-TW": "zh-Hant",
        };

        let languageToLoad = languageMap[this.getLocale()];

        if (!languageToLoad) {
            // If not found, split and check for two-digit codes
            const language = this.getLocale().split("-")[0];
            languageToLoad = languageMap[language]
                ? languageMap[language]
                : "en";
        }

        try {
            this.translations = await this.fetchTranslations(
                baseUrl,
                languageToLoad
            );
        } catch (error) {
            // Fall back to English if translations are not available for the selected locale
            if (languageToLoad !== "en") {
                console.error(
                    `Failed to load translations for '${languageToLoad}', falling back to English: ${
                        (error as Error).message
                    }`
                );
                languageToLoad = "en";
                this.translations = await this.fetchTranslations(
                    baseUrl,
                    languageToLoad
                );
            } else {
                throw new Error(
                    `Failed to load translations for '${languageToLoad}': ${
                        (error as Error).message
                    }`
                );
            }
        }
    }