From bb24bf53ccf00bb4025d903387d6c5dc6c50fdd6 Mon Sep 17 00:00:00 2001 From: Codemod Bot Date: Fri, 24 Jan 2025 09:44:26 +0000 Subject: [PATCH] feat: Add setup file --- package.json | 5 ++++- src/app/i18n.ts | 47 +++++++++++++++++++++++++++++++++++++++++++++++ src/app/index.tsx | 2 ++ 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 src/app/i18n.ts diff --git a/package.json b/package.json index f273255..c7340e7 100644 --- a/package.json +++ b/package.json @@ -25,10 +25,13 @@ "classnames": "^2.3.2", "compose-function": "^3.0.3", "history": "^5.3.0", + "i18next": "^24.1.0", + "i18next-browser-languagedetector": "^8.0.2", "localforage": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-hotkeys-hook": "^4.0.2" + "react-hotkeys-hook": "^4.0.2", + "react-i18next": "^15.2.0" }, "devDependencies": { "@babel/core": "^7.19.6", diff --git a/src/app/i18n.ts b/src/app/i18n.ts new file mode 100644 index 0000000..63873a6 --- /dev/null +++ b/src/app/i18n.ts @@ -0,0 +1,47 @@ +import type { Resource } from "i18next"; +import i18n from "i18next"; +import LanguageDetector from "i18next-browser-languagedetector"; +import { initReactI18next } from "react-i18next"; + +void i18n + .use({ + type: "backend", + read( + language: string, + namespace: string, + callback: (errorValue: unknown, translations: null | Resource) => void, + ) { + import(`./${namespace}/locales/${language}.json`) + .then((resources) => { + callback(null, resources as unknown as Resource); + }) + .catch((error) => { + callback(error, null); + }); + }, + }) + .use(LanguageDetector) + .use(initReactI18next) + .init({ + fallbackLng: "en", + debug: true, + + interpolation: { + escapeValue: false, + }, + + // react i18next special options (optional) + // override if needed - omit if ok with defaults + /* + react: { + bindI18n: 'languageChanged', + bindI18nStore: '', + transEmptyNodeValue: '', + transSupportBasicHtmlNodes: true, + transKeepBasicHtmlNodesFor: ['br', 'strong', 'i'], + useSuspense: true, + } + */ + }); + +export { i18n }; diff --git a/src/app/index.tsx b/src/app/index.tsx index e91ff26..ccb6e5d 100644 --- a/src/app/index.tsx +++ b/src/app/index.tsx @@ -1,3 +1,5 @@ +import { I18nextProvider } from "react-i18next"; +import { i18n } from ".././i18n"; import React from 'react'; import { createRoot } from 'react-dom/client'; import { App } from './app';