From 963600046d1847133512f8a2a7a8f9087bfcd3f2 Mon Sep 17 00:00:00 2001 From: Nayden Naydenov <31909318+nnaydenow@users.noreply.github.com> Date: Fri, 17 Mar 2023 12:10:51 +0200 Subject: [PATCH] fix(i18n): use correct i18n text bundle (#6720) Co-authored-by: Nayden Naydenov --- packages/base/src/asset-registries/i18n.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/base/src/asset-registries/i18n.ts b/packages/base/src/asset-registries/i18n.ts index a5d3e4b64bde..0b4202d73697 100644 --- a/packages/base/src/asset-registries/i18n.ts +++ b/packages/base/src/asset-registries/i18n.ts @@ -58,11 +58,15 @@ const _loadMessageBundleOnce = (packageName: string, localeId: string) => { const _showAssetsWarningOnce = (packageName: string) => { if (!warningShown.has(packageName)) { console.warn(`[${packageName}]: Message bundle assets are not configured. Falling back to English texts.`, /* eslint-disable-line */ - ` Add \`import "${packageName}/dist/Assets.js"\` in your bundle and make sure your build tool supports dynamic imports and JSON imports. See section "Assets" in the documentation for more information.`); /* eslint-disable-line */ + ` Add \`import "${packageName}/dist/Assets.js"\` in your bundle and make sure your build tool supports dynamic imports and JSON imports. See section "Assets" in the documentation for more information.`); /* eslint-disable-line */ warningShown.add(packageName); } }; +const useFallbackBundle = (packageName: string, localeId: string) => { + return localeId !== DEFAULT_LANGUAGE && !_hasLoader(packageName, localeId); +}; + /** * This method preforms the asynchronous task of fetching the actual text resources. It will fetch * each text resource over the network once (even for multiple calls to the same method). @@ -75,10 +79,14 @@ const _showAssetsWarningOnce = (packageName: string) => { const fetchI18nBundle = async (packageName: string) => { const language = getLocale().getLanguage(); const region = getLocale().getRegion(); - let localeId = normalizeLocale(language + (region ? `-${region}` : ``)); + let localeId = language + (region ? `-${region}` : ``); - while (localeId !== DEFAULT_LANGUAGE && !_hasLoader(packageName, localeId)) { - localeId = nextFallbackLocale(localeId); + if (useFallbackBundle(packageName, localeId)) { + localeId = normalizeLocale(localeId); + + while (useFallbackBundle(packageName, localeId)) { + localeId = nextFallbackLocale(localeId); + } } // use default language unless configured to always fetch it from the network