From a1fd4b2c20fc565ecfff6904e7c7dceac7a6d518 Mon Sep 17 00:00:00 2001
From: Felix Mosheev <9304194+felixmosh@users.noreply.github.com>
Date: Mon, 16 Dec 2024 10:38:46 +0200
Subject: [PATCH] improve vite example
---
examples/vite-react-i18next/package.json | 2 +-
examples/vite-react-i18next/src/i18n.js | 43 +++++++++++++-----------
examples/vite-react-i18next/src/main.jsx | 14 ++++----
examples/vite-react-i18next/yarn.lock | 8 ++---
4 files changed, 36 insertions(+), 31 deletions(-)
diff --git a/examples/vite-react-i18next/package.json b/examples/vite-react-i18next/package.json
index b054b60..1133e28 100644
--- a/examples/vite-react-i18next/package.json
+++ b/examples/vite-react-i18next/package.json
@@ -12,7 +12,7 @@
"dependencies": {
"i18next": "^23.5.1",
"i18next-browser-languagedetector": "^7.1.0",
- "i18next-hmr": "^3.0.0",
+ "i18next-hmr": "^3.1.3",
"i18next-http-backend": "^2.2.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
diff --git a/examples/vite-react-i18next/src/i18n.js b/examples/vite-react-i18next/src/i18n.js
index 94ff22a..63bfa72 100644
--- a/examples/vite-react-i18next/src/i18n.js
+++ b/examples/vite-react-i18next/src/i18n.js
@@ -2,28 +2,31 @@ import i18n from 'i18next';
import Backend from 'i18next-http-backend';
import LanguageDetector from 'i18next-browser-languagedetector';
import { initReactI18next } from 'react-i18next';
-import { HMRPlugin } from 'i18next-hmr/plugin';
-const instance = i18n
- // load translation using http -> see /public/locales
- // learn more: https://github.com/i18next/i18next-http-backend
- .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);
+export async function init() {
+ const instance = i18n
+ // load translation using http -> see /public/locales
+ // learn more: https://github.com/i18next/i18next-http-backend
+ .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);
-if (import.meta.env.MODE !== 'production') {
- instance.use(new HMRPlugin({ vite: { client: true } }));
-}
+ if (import.meta.env.MODE !== 'production') {
+ const { HMRPlugin } = await import('i18next-hmr/plugin');
+
+ instance.use(new HMRPlugin({ vite: { client: true } }));
+ }
-instance.init({
- fallbackLng: 'en',
+ await instance.init({
+ fallbackLng: 'en',
- interpolation: {
- escapeValue: false, // not needed for react as it escapes by default
- },
-});
+ interpolation: {
+ escapeValue: false, // not needed for react as it escapes by default
+ },
+ });
-export default i18n;
+ return instance;
+}
diff --git a/examples/vite-react-i18next/src/main.jsx b/examples/vite-react-i18next/src/main.jsx
index 6e63000..2e66c5a 100644
--- a/examples/vite-react-i18next/src/main.jsx
+++ b/examples/vite-react-i18next/src/main.jsx
@@ -2,10 +2,12 @@ import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App.jsx';
import './index.css';
-import './i18n.js';
+import { init } from './i18n.js';
-ReactDOM.createRoot(document.getElementById('root')).render(
-
-
-
-);
+init().then(() => {
+ ReactDOM.createRoot(document.getElementById('root')).render(
+
+
+
+ );
+});
diff --git a/examples/vite-react-i18next/yarn.lock b/examples/vite-react-i18next/yarn.lock
index 51a8325..ed1f1cb 100644
--- a/examples/vite-react-i18next/yarn.lock
+++ b/examples/vite-react-i18next/yarn.lock
@@ -1250,10 +1250,10 @@ i18next-browser-languagedetector@^7.1.0:
dependencies:
"@babel/runtime" "^7.19.4"
-i18next-hmr@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/i18next-hmr/-/i18next-hmr-3.0.0.tgz#3637e305892b55b4226bb58fbfa5870fe60c1a7d"
- integrity sha512-Ca8RR7OqdrrR+nrOk3W/fkWRVOznRsnYE3oHFquxGRWPuxe+zuSeAc5Blo5qdpNM8ub9hth8Vs4GukEVd+YAIA==
+i18next-hmr@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/i18next-hmr/-/i18next-hmr-3.1.3.tgz#5073673849412b2b4e7d34adeb97e42898e30ade"
+ integrity sha512-zoM4B6toVk48rAMl0t9eV+ldEq9HIO9+bek8H1aGSLQZAjPSBQCUggkxdk0vQjEWSKLsssxZqZBAWS+Ow1rcsA==
i18next-http-backend@^2.2.2:
version "2.2.2"