From 25281e553953ad4007b5db69794c0b567da3abb8 Mon Sep 17 00:00:00 2001 From: Arthi-chaud Date: Mon, 8 Aug 2022 12:10:20 +0200 Subject: [PATCH] Front: Type Safe internationalization --- .../i18n/{translations.ts => Translations.ts} | 0 front/i18n/i18n.ts | 19 +++++++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) rename front/i18n/{translations.ts => Translations.ts} (100%) diff --git a/front/i18n/translations.ts b/front/i18n/Translations.ts similarity index 100% rename from front/i18n/translations.ts rename to front/i18n/Translations.ts diff --git a/front/i18n/i18n.ts b/front/i18n/i18n.ts index 792b505..9da0788 100644 --- a/front/i18n/i18n.ts +++ b/front/i18n/i18n.ts @@ -1,7 +1,11 @@ -import { en, fr } from './translations'; +import { en, fr } from './Translations'; import i18n from "i18next"; import { initReactI18next } from "react-i18next"; + +export type AvailableLanguages = 'en' | 'fr'; +export const DefaultLanguage: AvailableLanguages = 'en'; + i18n .use(initReactI18next) .init({ @@ -13,10 +17,17 @@ i18n translation: fr } }, - lng: "en", - fallbackLng: "en", + lng: DefaultLanguage, + fallbackLng: DefaultLanguage, interpolation: { escapeValue: false } }); -export default i18n; \ No newline at end of file + +export default i18n; +/** + * Typesafe translation method + * @param textKey the key of th text to translate + * @returns the translated text + */ +export const translate = (textKey: keyof typeof en) => i18n.t(textKey); \ No newline at end of file