From 7fb7c558770a1c53e75e084fa7a2df35ffd928c5 Mon Sep 17 00:00:00 2001 From: Tilman Vatteroth Date: Tue, 31 Aug 2021 22:40:33 +0200 Subject: [PATCH] Replace i18next-http-backend with i18next-resources-to-backend (#1466) * Replace i18next-http-backend with i18next-resources-to-backend Signed-off-by: Tilman Vatteroth --- .reuse/dep5 | 2 +- {public/locales => locales}/ar.json | 0 {public/locales => locales}/ca.json | 0 {public/locales => locales}/cs.json | 0 {public/locales => locales}/da.json | 0 {public/locales => locales}/de.json | 0 {public/locales => locales}/el.json | 0 {public/locales => locales}/en.json | 0 {public/locales => locales}/eo.json | 0 {public/locales => locales}/es.json | 0 {public/locales => locales}/fr.json | 0 {public/locales => locales}/hi.json | 0 {public/locales => locales}/hr.json | 0 {public/locales => locales}/id.json | 0 {public/locales => locales}/it.json | 0 {public/locales => locales}/ja.json | 0 {public/locales => locales}/ko.json | 0 {public/locales => locales}/nl.json | 0 {public/locales => locales}/pl.json | 0 {public/locales => locales}/pt.json | 0 {public/locales => locales}/ru.json | 0 {public/locales => locales}/sk.json | 0 {public/locales => locales}/sr.json | 0 {public/locales => locales}/sv.json | 0 {public/locales => locales}/tr.json | 0 {public/locales => locales}/uk.json | 0 {public/locales => locales}/vi.json | 0 {public/locales => locales}/zh-CN.json | 0 {public/locales => locales}/zh-TW.json | 0 package.json | 2 +- .../initializers/{ => i18n}/i18n.ts | 20 +++++++++----- .../application-loader/initializers/index.ts | 4 +-- yarn.lock | 26 +++++++++---------- 33 files changed, 30 insertions(+), 24 deletions(-) rename {public/locales => locales}/ar.json (100%) rename {public/locales => locales}/ca.json (100%) rename {public/locales => locales}/cs.json (100%) rename {public/locales => locales}/da.json (100%) rename {public/locales => locales}/de.json (100%) rename {public/locales => locales}/el.json (100%) rename {public/locales => locales}/en.json (100%) rename {public/locales => locales}/eo.json (100%) rename {public/locales => locales}/es.json (100%) rename {public/locales => locales}/fr.json (100%) rename {public/locales => locales}/hi.json (100%) rename {public/locales => locales}/hr.json (100%) rename {public/locales => locales}/id.json (100%) rename {public/locales => locales}/it.json (100%) rename {public/locales => locales}/ja.json (100%) rename {public/locales => locales}/ko.json (100%) rename {public/locales => locales}/nl.json (100%) rename {public/locales => locales}/pl.json (100%) rename {public/locales => locales}/pt.json (100%) rename {public/locales => locales}/ru.json (100%) rename {public/locales => locales}/sk.json (100%) rename {public/locales => locales}/sr.json (100%) rename {public/locales => locales}/sv.json (100%) rename {public/locales => locales}/tr.json (100%) rename {public/locales => locales}/uk.json (100%) rename {public/locales => locales}/vi.json (100%) rename {public/locales => locales}/zh-CN.json (100%) rename {public/locales => locales}/zh-TW.json (100%) rename src/components/application-loader/initializers/{ => i18n}/i18n.ts (57%) diff --git a/.reuse/dep5 b/.reuse/dep5 index 5d01b077f..3a20c46ff 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -15,7 +15,7 @@ Files: public/icons/* Copyright: 2021 The HedgeDoc developers (see AUTHORS file) License: LicenseRef-HedgeDoc-Icon-Usage-Guidelines -Files: public/locales/* +Files: locales/* Copyright: 2021 The HedgeDoc developers (see AUTHORS file) License: CC-BY-SA-4.0 diff --git a/public/locales/ar.json b/locales/ar.json similarity index 100% rename from public/locales/ar.json rename to locales/ar.json diff --git a/public/locales/ca.json b/locales/ca.json similarity index 100% rename from public/locales/ca.json rename to locales/ca.json diff --git a/public/locales/cs.json b/locales/cs.json similarity index 100% rename from public/locales/cs.json rename to locales/cs.json diff --git a/public/locales/da.json b/locales/da.json similarity index 100% rename from public/locales/da.json rename to locales/da.json diff --git a/public/locales/de.json b/locales/de.json similarity index 100% rename from public/locales/de.json rename to locales/de.json diff --git a/public/locales/el.json b/locales/el.json similarity index 100% rename from public/locales/el.json rename to locales/el.json diff --git a/public/locales/en.json b/locales/en.json similarity index 100% rename from public/locales/en.json rename to locales/en.json diff --git a/public/locales/eo.json b/locales/eo.json similarity index 100% rename from public/locales/eo.json rename to locales/eo.json diff --git a/public/locales/es.json b/locales/es.json similarity index 100% rename from public/locales/es.json rename to locales/es.json diff --git a/public/locales/fr.json b/locales/fr.json similarity index 100% rename from public/locales/fr.json rename to locales/fr.json diff --git a/public/locales/hi.json b/locales/hi.json similarity index 100% rename from public/locales/hi.json rename to locales/hi.json diff --git a/public/locales/hr.json b/locales/hr.json similarity index 100% rename from public/locales/hr.json rename to locales/hr.json diff --git a/public/locales/id.json b/locales/id.json similarity index 100% rename from public/locales/id.json rename to locales/id.json diff --git a/public/locales/it.json b/locales/it.json similarity index 100% rename from public/locales/it.json rename to locales/it.json diff --git a/public/locales/ja.json b/locales/ja.json similarity index 100% rename from public/locales/ja.json rename to locales/ja.json diff --git a/public/locales/ko.json b/locales/ko.json similarity index 100% rename from public/locales/ko.json rename to locales/ko.json diff --git a/public/locales/nl.json b/locales/nl.json similarity index 100% rename from public/locales/nl.json rename to locales/nl.json diff --git a/public/locales/pl.json b/locales/pl.json similarity index 100% rename from public/locales/pl.json rename to locales/pl.json diff --git a/public/locales/pt.json b/locales/pt.json similarity index 100% rename from public/locales/pt.json rename to locales/pt.json diff --git a/public/locales/ru.json b/locales/ru.json similarity index 100% rename from public/locales/ru.json rename to locales/ru.json diff --git a/public/locales/sk.json b/locales/sk.json similarity index 100% rename from public/locales/sk.json rename to locales/sk.json diff --git a/public/locales/sr.json b/locales/sr.json similarity index 100% rename from public/locales/sr.json rename to locales/sr.json diff --git a/public/locales/sv.json b/locales/sv.json similarity index 100% rename from public/locales/sv.json rename to locales/sv.json diff --git a/public/locales/tr.json b/locales/tr.json similarity index 100% rename from public/locales/tr.json rename to locales/tr.json diff --git a/public/locales/uk.json b/locales/uk.json similarity index 100% rename from public/locales/uk.json rename to locales/uk.json diff --git a/public/locales/vi.json b/locales/vi.json similarity index 100% rename from public/locales/vi.json rename to locales/vi.json diff --git a/public/locales/zh-CN.json b/locales/zh-CN.json similarity index 100% rename from public/locales/zh-CN.json rename to locales/zh-CN.json diff --git a/public/locales/zh-TW.json b/locales/zh-TW.json similarity index 100% rename from public/locales/zh-TW.json rename to locales/zh-TW.json diff --git a/package.json b/package.json index 24de5aa2e..f1579ab8e 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "highlight.js": "11.2.0", "i18next": "20.4.0", "i18next-browser-languagedetector": "6.1.2", - "i18next-http-backend": "1.3.0", + "i18next-resources-to-backend": "1.0.0", "js-yaml": "4.1.0", "katex": "0.13.16", "luxon": "2.0.2", diff --git a/src/components/application-loader/initializers/i18n.ts b/src/components/application-loader/initializers/i18n/i18n.ts similarity index 57% rename from src/components/application-loader/initializers/i18n.ts rename to src/components/application-loader/initializers/i18n/i18n.ts index f845d5251..3f88faa09 100644 --- a/src/components/application-loader/initializers/i18n.ts +++ b/src/components/application-loader/initializers/i18n/i18n.ts @@ -6,22 +6,28 @@ import i18n from 'i18next' import LanguageDetector from 'i18next-browser-languagedetector' -import Backend from 'i18next-http-backend' +import resourcesToBackend from 'i18next-resources-to-backend' import { Settings } from 'luxon' import { initReactI18next } from 'react-i18next' -export const setUpI18n = async (frontendAssetsUrl: string): Promise => { +export const setUpI18n = async (): Promise => { await i18n - .use(Backend) + .use( + resourcesToBackend((language, namespace, callback) => { + import(`../../../../../locales/${language}.json`) + .then((resources) => { + callback(null, resources) + }) + .catch((error) => { + callback(error, null) + }) + }) + ) .use(LanguageDetector) .use(initReactI18next) .init({ fallbackLng: 'en', debug: process.env.NODE_ENV !== 'production', - backend: { - loadPath: `${frontendAssetsUrl}locales/{{lng}}.json` - }, - interpolation: { escapeValue: false } diff --git a/src/components/application-loader/initializers/index.ts b/src/components/application-loader/initializers/index.ts index 0cd2bd016..354bf7756 100644 --- a/src/components/application-loader/initializers/index.ts +++ b/src/components/application-loader/initializers/index.ts @@ -4,7 +4,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import { setUpI18n } from './i18n' +import { setUpI18n } from './i18n/i18n' import { refreshHistoryState } from '../../../redux/history/methods' import { fetchAndSetBanner } from './fetch-and-set-banner' import { setApiUrl } from '../../../redux/api-url/methods' @@ -36,7 +36,7 @@ export const createSetUpTaskList = ( return [ { name: 'Load Translations', - task: setUpI18n(frontendAssetsUrl) + task: setUpI18n() }, { name: 'Load config', diff --git a/yarn.lock b/yarn.lock index f523ca159..17abf76f4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1157,6 +1157,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6" + integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.8", "@babel/runtime@^7.14.0", "@babel/runtime@^7.14.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.15.3" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.3.tgz#2e1c2880ca118e5b2f9988322bd8a7656a32502b" @@ -4604,13 +4611,6 @@ cross-env@7.0.3: dependencies: cross-spawn "^7.0.1" -cross-fetch@3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.4.tgz#9723f3a3a247bf8b89039f3a380a9244e8fa2f39" - integrity sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ== - dependencies: - node-fetch "2.6.1" - cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -7847,12 +7847,12 @@ i18next-browser-languagedetector@6.1.2: dependencies: "@babel/runtime" "^7.14.6" -i18next-http-backend@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/i18next-http-backend/-/i18next-http-backend-1.3.0.tgz#fcafb9583cf2942a9c669bd1868ec84a11410536" - integrity sha512-49Sf7Dt6GHeFYlCcCTwD39bkaiw7ld8RlGCXw6ZERabN7SXaLM6qRGnd+XbFdPhJHNMHvt/38XiRtJcEgu5Arg== +i18next-resources-to-backend@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/i18next-resources-to-backend/-/i18next-resources-to-backend-1.0.0.tgz#a6799e30c5d55db9fd7d3872e8ac5ddbf79755f3" + integrity sha512-mxntiPK84guqzYP/0T4OwU6BWda57ar7Tw5pU8BjM8dS4rULOtYU4JHMXfCbqZhNQEPCrp1WrVBEPk6yOze8jw== dependencies: - cross-fetch "3.1.4" + "@babel/runtime" "7.14.0" i18next@20.4.0: version "20.4.0" @@ -10004,7 +10004,7 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -node-fetch@2.6.1, node-fetch@^2.6.1: +node-fetch@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==