frontend/i18n.ts (view raw)
1import i18n from 'i18next';
2import {initReactI18next} from 'react-i18next';
3import translationFr from './locales/fr.json';
4import translationEn from './locales/en.json';
5import {Enum_Userspermissionsuser_Lang} from './generated/graphql';
6
7const resources = {
8 fr: {
9 translation: translationFr,
10 },
11 en: {
12 translation: translationEn,
13 },
14};
15
16export const getUserLng = () => {
17 if (
18 typeof window !== 'undefined' &&
19 typeof window.navigator !== 'undefined'
20 ) {
21 if (navigator.language === 'fr' || navigator.language.includes('fr-')) {
22 return Enum_Userspermissionsuser_Lang.Fr
23 }
24 }
25 return Enum_Userspermissionsuser_Lang.En
26};
27
28i18n
29 .use(initReactI18next) // passes i18n down to react-i18next
30 .init({
31 resources,
32 lng: getUserLng(),
33 supportedLngs: ['fr', 'en'],
34 interpolation: {
35 escapeValue: false, // react already safes from xss
36 },
37 });
38
39export default i18n;