import type { i18n } from 'i18next'; import { writable } from 'svelte/store'; export const createI18nStore = (i18n: i18n) => { const i18nWritable = writable(i18n); i18n.on('initialized', () => { i18nWritable.set(i18n); }); i18n.on('loaded', () => { i18nWritable.set(i18n); }); i18n.on('added', () => i18nWritable.set(i18n)); i18n.on('languageChanged', () => { i18nWritable.set(i18n); }); return i18nWritable; }; export const isLoading = (i18n: i18n) => { const isLoading = writable(false); // if loaded resources are empty || {}, set loading to true i18n.on('loaded', (resources) => { Object.keys(resources).length !== 0 && isLoading.set(false); }); // if resources failed loading, set loading to true i18n.on('failedLoading', () => { isLoading.set(true); }); return isLoading; };