mirror of
https://github.com/aliasvault/aliasvault.git
synced 2025-12-23 22:28:22 -05:00
61 lines
1.6 KiB
TypeScript
61 lines
1.6 KiB
TypeScript
import { getLocales } from 'expo-localization';
|
|
import i18n from 'i18next';
|
|
import { initReactI18next } from 'react-i18next';
|
|
|
|
import de from './locales/de.json';
|
|
import en from './locales/en.json';
|
|
import es from './locales/es.json';
|
|
import fi from './locales/fi.json';
|
|
import fr from './locales/fr.json';
|
|
import he from './locales/he.json';
|
|
import it from './locales/it.json';
|
|
import nl from './locales/nl.json';
|
|
import pl from './locales/pl.json';
|
|
import pt from './locales/pt.json';
|
|
import ru from './locales/ru.json';
|
|
import uk from './locales/uk.json';
|
|
import zh from './locales/zh.json';
|
|
|
|
const resources = {
|
|
de: { translation: de },
|
|
en: { translation: en },
|
|
es: { translation: es },
|
|
fi: { translation: fi },
|
|
fr: { translation: fr },
|
|
he: { translation: he },
|
|
nl: { translation: nl },
|
|
it: { translation: it },
|
|
pl: { translation: pl },
|
|
pt: { translation: pt },
|
|
ru: { translation: ru },
|
|
uk: { translation: uk },
|
|
zh: { translation: zh },
|
|
};
|
|
|
|
/**
|
|
* Initialize i18n configuration
|
|
*/
|
|
const initI18n = async (): Promise<void> => {
|
|
// Always use system language, no custom storage
|
|
const locales = getLocales();
|
|
const deviceLanguage = locales[0]?.languageCode ?? 'en';
|
|
const selectedLanguage = resources[deviceLanguage as keyof typeof resources] ? deviceLanguage : 'en';
|
|
|
|
// eslint-disable-next-line import/no-named-as-default-member
|
|
await i18n
|
|
.use(initReactI18next)
|
|
.init({
|
|
resources,
|
|
lng: selectedLanguage,
|
|
fallbackLng: 'en',
|
|
interpolation: {
|
|
escapeValue: false,
|
|
},
|
|
react: {
|
|
useSuspense: false,
|
|
},
|
|
});
|
|
};
|
|
|
|
export { initI18n };
|
|
export default i18n; |