mirror of
https://github.com/open-webui/open-webui
synced 2025-01-29 13:58:09 +00:00
feat(i18n): improve init function with cleaner code and nullish coalescing operator
- Use object destructuring for clearer variable assignment. - Utilize the nullish coalescing operator to simplify ternary expressions. - Refactored the import statement to remove duplication.
This commit is contained in:
parent
6ffa189814
commit
9c2313a1bd
@ -1,6 +1,6 @@
|
|||||||
import i18next from 'i18next';
|
import i18next from 'i18next';
|
||||||
import resourcesToBackend from 'i18next-resources-to-backend';
|
|
||||||
import LanguageDetector from 'i18next-browser-languagedetector';
|
import LanguageDetector from 'i18next-browser-languagedetector';
|
||||||
|
import resourcesToBackend from 'i18next-resources-to-backend';
|
||||||
import type { i18n as i18nType } from 'i18next';
|
import type { i18n as i18nType } from 'i18next';
|
||||||
import { writable } from 'svelte/store';
|
import { writable } from 'svelte/store';
|
||||||
|
|
||||||
@ -37,36 +37,32 @@ const createIsLoadingStore = (i18n: i18nType) => {
|
|||||||
return isLoading;
|
return isLoading;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const initI18n = (defaultLocale: string | undefined) => {
|
export const initI18n = (defaultLocale?: string) => {
|
||||||
let detectionOrder = defaultLocale
|
// Use object destructuring for cleaner code
|
||||||
? ['querystring', 'localStorage']
|
const [defaultDetection, fallbackDetection] = defaultLocale ? ['querystring', 'localStorage'] : ['querystring', 'localStorage', 'navigator'];
|
||||||
: ['querystring', 'localStorage', 'navigator'];
|
|
||||||
let fallbackDefaultLocale = defaultLocale ? [defaultLocale] : ['en-US'];
|
// Use nullish coalescing operator to simplify the ternary expression
|
||||||
|
const fallbackDefaultLocale = defaultLocale ?? 'en-US';
|
||||||
const loadResource = (language: string, namespace: string) =>
|
|
||||||
import(`./locales/${language}/${namespace}.json`);
|
const loadResource = (language: string, namespace: string) => import(`./locales/${language}/${namespace}.json`);
|
||||||
|
|
||||||
i18next
|
i18next
|
||||||
.use(resourcesToBackend(loadResource))
|
.use(resourcesToBackend(loadResource))
|
||||||
.use(LanguageDetector)
|
.use(LanguageDetector)
|
||||||
.init({
|
.init({
|
||||||
debug: false,
|
debug: false,
|
||||||
detection: {
|
detection: {
|
||||||
order: detectionOrder,
|
order: [defaultDetection, fallbackDetection],
|
||||||
caches: ['localStorage'],
|
caches: ['localStorage'],
|
||||||
lookupQuerystring: 'lang',
|
lookupQuerystring: 'lang',
|
||||||
lookupLocalStorage: 'locale'
|
lookupLocalStorage: 'locale'
|
||||||
},
|
},
|
||||||
fallbackLng: {
|
fallbackLng: fallbackDefaultLocale,
|
||||||
default: fallbackDefaultLocale
|
ns: 'translation',
|
||||||
},
|
returnEmptyString: false,
|
||||||
ns: 'translation',
|
interpolation: { escapeValue: false }
|
||||||
returnEmptyString: false,
|
});
|
||||||
interpolation: {
|
};
|
||||||
escapeValue: false // not needed for svelte as it escapes by default
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
const i18n = createI18nStore(i18next);
|
const i18n = createI18nStore(i18next);
|
||||||
const isLoadingStore = createIsLoadingStore(i18next);
|
const isLoadingStore = createIsLoadingStore(i18next);
|
||||||
|
Loading…
Reference in New Issue
Block a user