From 619894fc2a7444782cd34d6367970ad872b616b5 Mon Sep 17 00:00:00 2001 From: Leander Tolksdorf <leander.tolksdorf@fu-berlin.de> Date: Wed, 8 Dec 2021 16:00:46 +0100 Subject: [PATCH] Setup i18n boilerplate Co-authored-by: Alexander Rudolph <drblaui@users.noreply.github.com> Co-authored-by: Sebastian Kuzniarz <kuzniarz@users.noreply.github.com> --- client/src/i18n/index.ts | 31 +++++++++++++++++++++++++++++++ client/src/index.tsx | 8 ++++++-- 2 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 client/src/i18n/index.ts diff --git a/client/src/i18n/index.ts b/client/src/i18n/index.ts new file mode 100644 index 0000000..f466163 --- /dev/null +++ b/client/src/i18n/index.ts @@ -0,0 +1,31 @@ +import i18n from "i18next"; +import LanguageDetector from "i18next-browser-languagedetector"; +import Backend from "i18next-http-backend"; +import { initReactI18next } from "react-i18next"; + +// don't want to use this? +// have a look at the Quick start guide +// for passing in lng and translations on init + +i18n + // load translation using http -> see /public/locales (i.e. https://github.com/i18next/react-i18next/tree/master/example/react/public/locales) + // learn more: https://github.com/i18next/i18next-http-backend + // want your translations to be loaded from a professional CDN? => https://github.com/locize/react-tutorial#step-2---use-the-locize-cdn + .use(Backend) + // detect user language + // learn more: https://github.com/i18next/i18next-browser-languageDetector + .use(LanguageDetector) + // pass the i18n instance to react-i18next. + .use(initReactI18next) + // init i18next + // for all options read: https://www.i18next.com/overview/configuration-options + .init({ + fallbackLng: "en", + debug: true, + + interpolation: { + escapeValue: false, // not needed for react as it escapes by default + }, + }); + +export default i18n; diff --git a/client/src/index.tsx b/client/src/index.tsx index 38a827e..3ee6e0c 100644 --- a/client/src/index.tsx +++ b/client/src/index.tsx @@ -1,11 +1,15 @@ -import React from "react"; +import React, { Suspense } from "react"; import ReactDOM from "react-dom"; +import Loading from "./components/Loading"; +import "./i18n"; import Router from "./Router"; import "./styles/app.scss"; ReactDOM.render( <React.StrictMode> - <Router /> + <Suspense fallback={<Loading />}> + <Router /> + </Suspense> </React.StrictMode>, document.getElementById("root") ); -- GitLab