Refactor i18n settings and improve language load handling

This update separates the creation of i18n settings into its own function (@kit/i18n) and enhances the handling of language and namespace loading in i18n.client. It tracks loaded languages and namespaces, and prevents rendering if none are loaded or after a maximum number of iterations. The usage of Suspense has also been modified in root-providers to employ a null fallback.
This commit is contained in:
giancarlo
2024-04-21 18:40:12 +08:00
parent b1f2e435aa
commit ae10f7b142
7 changed files with 96 additions and 34 deletions

View File

@@ -0,0 +1,33 @@
/**
* Get i18n settings for i18next.
* @param languages
* @param language
* @param namespaces
*/
export function createI18nSettings({
languages,
language,
namespaces,
}: {
languages: string[];
language: string;
namespaces?: string | string[];
}) {
const lng = language;
const ns = namespaces;
return {
supportedLngs: languages,
fallbackLng: languages[0],
detection: undefined,
lng,
load: 'languageOnly',
preload: false,
lowerCaseLng: true,
fallbackNS: ns,
ns,
react: {
useSuspense: true,
},
};
}