blob: ae2a78e69d44d55ae06c758c9a3e79f04419cdba [file] [log] [blame]
simon26e79f72022-10-05 22:16:08 -04001/*
2 * Copyright (C) 2022 Savoir-faire Linux Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Affero General Public License as
6 * published by the Free Software Foundation; either version 3 of the
7 * License, or (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU Affero General Public License for more details.
13 *
14 * You should have received a copy of the GNU Affero General Public
15 * License along with this program. If not, see
16 * <https://www.gnu.org/licenses/>.
17 */
idillon3470d072022-11-22 15:22:34 -050018import i18n, { Resource, ResourceLanguage } from 'i18next';
simond47ef9e2022-09-28 22:24:28 -040019import { initReactI18next } from 'react-i18next';
simon07b4eb02022-09-29 17:50:26 -040020
simond8ca2f22022-10-11 23:30:55 -040021import translationEn from './locale/en/translation.json';
22import translationFr from './locale/fr/translation.json';
idillon5815c732022-09-16 13:54:45 -040023
idillon4012a702022-11-24 13:45:43 -050024export type LanguageTag = 'en' | 'fr';
25
idillon3470d072022-11-22 15:22:34 -050026interface LanguageInfo {
idillon4012a702022-11-24 13:45:43 -050027 readonly tag: LanguageTag;
28 readonly fullName: string;
29 readonly translation: ResourceLanguage;
idillon3470d072022-11-22 15:22:34 -050030}
31
idillon4012a702022-11-24 13:45:43 -050032export const languagesInfos: readonly LanguageInfo[] = [
idillon3470d072022-11-22 15:22:34 -050033 {
34 tag: 'en',
35 fullName: 'English',
36 translation: translationEn,
37 },
idillon4012a702022-11-24 13:45:43 -050038 {
39 tag: 'fr',
40 fullName: 'Français',
41 translation: translationFr,
42 },
43] as const;
idillon3470d072022-11-22 15:22:34 -050044
idillon4012a702022-11-24 13:45:43 -050045const resources = languagesInfos.reduce((resources: Resource, { tag, translation }) => {
idillon3470d072022-11-22 15:22:34 -050046 resources[tag] = { translation };
47 return resources;
48}, {});
49
simond47ef9e2022-09-28 22:24:28 -040050i18n.use(initReactI18next).init({
simond8ca2f22022-10-11 23:30:55 -040051 debug: import.meta.env.DEV,
simond47ef9e2022-09-28 22:24:28 -040052 lng: 'en',
idillon5815c732022-09-16 13:54:45 -040053 interpolation: {
54 escapeValue: false,
55 },
idillon3470d072022-11-22 15:22:34 -050056 resources,
simond47ef9e2022-09-28 22:24:28 -040057});
idillon5815c732022-09-16 13:54:45 -040058
simond47ef9e2022-09-28 22:24:28 -040059export default i18n;