nostros/frontend/i18n.config.ts

63 lines
1.4 KiB
TypeScript
Raw Normal View History

2022-10-31 00:37:42 +00:00
import i18n from 'i18next'
import { initReactI18next } from 'react-i18next'
2022-12-24 15:38:29 +00:00
import { NativeModules, Platform } from 'react-native'
2022-10-31 00:37:42 +00:00
import en from './Locales/en.json'
2022-12-23 18:19:52 +00:00
import es from './Locales/es.json'
import ru from './Locales/ru.json'
import fr from './Locales/fr.json'
import de from './Locales/de.json'
2023-02-07 15:44:10 +00:00
import zhCn from './Locales/zhCn.json'
/* eslint-disable import/no-duplicates */
import setDefaultOptions from 'date-fns/setDefaultOptions'
2023-02-03 09:37:54 +00:00
import {
enUS as dateEnUS,
es as dateEs,
ru as dateRu,
fr as dateFr,
de as dateDe,
2023-02-07 15:44:10 +00:00
zhCN as dateZhCh,
2023-02-03 09:37:54 +00:00
} from 'date-fns/locale'
/* eslint-enable import/no-duplicates */
2022-10-29 13:38:04 +00:00
2022-12-24 15:38:29 +00:00
const locale =
Platform.OS === 'ios'
? NativeModules.SettingsManager.settings.AppleLocale
: NativeModules.I18nManager.localeIdentifier
2023-02-03 10:34:10 +00:00
const dateLocales: Record<string, Locale> = {
es: dateEs,
ru: dateRu,
en: dateEnUS,
fr: dateFr,
de: dateDe,
2023-02-07 15:44:10 +00:00
zhCn: dateZhCh,
2023-02-03 10:34:10 +00:00
}
const deviceLocale: string = locale?.split('_')[0] ?? 'en'
setDefaultOptions({ locale: dateLocales[deviceLocale] })
2023-02-03 10:34:10 +00:00
i18n.language = locale
2022-10-29 13:38:04 +00:00
i18n.use(initReactI18next).init({
2022-10-30 15:24:12 +00:00
compatibilityJSON: 'v3',
2022-10-29 13:38:04 +00:00
fallbackLng: 'en',
resources: {
2022-10-31 01:23:27 +00:00
en,
2022-12-23 18:19:52 +00:00
es,
ru,
fr,
2023-02-03 09:37:54 +00:00
de,
2023-02-07 15:44:10 +00:00
zhCn,
2022-10-29 13:38:04 +00:00
},
2022-12-24 15:38:29 +00:00
lng: locale.substring(0, 2),
2022-10-29 13:38:04 +00:00
ns: ['common'],
defaultNS: 'common',
debug: true,
interpolation: {
2022-10-31 01:23:27 +00:00
escapeValue: false,
},
2022-10-31 00:37:42 +00:00
})
2023-02-03 10:34:10 +00:00
i18n.on('languageChanged', (lng) => {
setDefaultOptions({ locale: dateLocales[lng] })
})
2022-10-29 13:38:04 +00:00
2022-10-31 00:37:42 +00:00
export default i18n