@lifi/wallet-management
Version:
LI.FI Wallet Management solution.
48 lines • 1.76 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { createInstance } from 'i18next';
import { useEffect, useMemo } from 'react';
import { I18nextProvider } from 'react-i18next';
import { allLanguages } from './constants.js';
import { enResource } from './enResource.js';
import { loadLocale } from './i18n.js';
export const I18nProvider = ({ children, locale, }) => {
const i18nInstance = useMemo(() => {
const i18n = createInstance({
lng: 'en',
fallbackLng: 'en',
lowerCaseLng: true,
interpolation: { escapeValue: false },
resources: {
en: {
translation: enResource,
},
},
detection: {
caches: [],
},
returnEmptyString: false,
});
i18n.init();
return i18n;
}, []);
useEffect(() => {
const handleLanguageChange = async () => {
const language = allLanguages.includes(locale)
? locale
: 'en';
if (language) {
if (!i18nInstance.hasResourceBundle(language, 'translation')) {
await loadLocale(language).then((languageResource) => {
i18nInstance.addResourceBundle(language, 'translation', languageResource, true, true);
});
}
if (language !== i18nInstance.language) {
await i18nInstance.changeLanguage(language);
}
}
};
handleLanguageChange();
}, [locale, i18nInstance]);
return _jsx(I18nextProvider, { i18n: i18nInstance, children: children });
};
//# sourceMappingURL=I18nProvider.js.map