From d8e84b18f8afe84d680f73a01e052b29b040756d Mon Sep 17 00:00:00 2001
From: AkiraFukushima
Date: Wed, 27 Nov 2019 00:29:02 +0900
Subject: [PATCH] refs #901 Load translation json directly instead of
i18next-sync-fs-backend
---
.electron-vue/webpack.main.config.js | 12 +++--
.electron-vue/webpack.renderer.config.js | 6 +++
package-lock.json | 42 ++++-----------
package.json | 2 +-
src/config/i18n.ts | 66 +++++++++++++++++++-----
5 files changed, 78 insertions(+), 50 deletions(-)
diff --git a/.electron-vue/webpack.main.config.js b/.electron-vue/webpack.main.config.js
index 6c310386..227e262a 100644
--- a/.electron-vue/webpack.main.config.js
+++ b/.electron-vue/webpack.main.config.js
@@ -13,9 +13,7 @@ let mainConfig = {
entry: {
main: path.join(__dirname, '../src/main/index.ts')
},
- externals: [
- ...Object.keys(dependencies || {})
- ],
+ externals: [...Object.keys(dependencies || {})],
module: {
rules: [
{
@@ -42,6 +40,12 @@ let mainConfig = {
{
test: /\.node$/,
use: 'node-loader'
+ },
+ {
+ test: /\.json$/,
+ exclude: /node_modules/,
+ use: 'json-loader',
+ type: 'javascript/auto'
}
]
},
@@ -81,7 +85,7 @@ let mainConfig = {
if (process.env.NODE_ENV !== 'production') {
mainConfig.plugins.push(
new webpack.DefinePlugin({
- '__static': `"${path.join(__dirname, '../static').replace(/\\/g, '\\\\')}"`
+ __static: `"${path.join(__dirname, '../static').replace(/\\/g, '\\\\')}"`
})
)
}
diff --git a/.electron-vue/webpack.renderer.config.js b/.electron-vue/webpack.renderer.config.js
index eaf6cc89..c9974756 100644
--- a/.electron-vue/webpack.renderer.config.js
+++ b/.electron-vue/webpack.renderer.config.js
@@ -117,6 +117,12 @@ let rendererConfig = {
name: 'fonts/[name]--[folder].[ext]'
}
}
+ },
+ {
+ test: /\.json$/,
+ exclude: /node_modules/,
+ use: 'json-loader',
+ type: 'javascript/auto'
}
]
},
diff --git a/package-lock.json b/package-lock.json
index 53ae2d02..44c0c0d2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6395,7 +6395,7 @@
"dependencies": {
"resolve": {
"version": "1.1.7",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+ "resolved": "http://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
"integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
"dev": true
}
@@ -13049,36 +13049,6 @@
"resolved": "https://registry.npmjs.org/i18next/-/i18next-12.1.0.tgz",
"integrity": "sha512-AexmwGkKxwKfo5fGeXTWEY4xqzRPigQ1S/0InOUUVziGO54cd4fKyYK8ED1Thx9fd+WA3fRSZ+1iekvFQMbsFw=="
},
- "i18next-sync-fs-backend": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/i18next-sync-fs-backend/-/i18next-sync-fs-backend-1.1.1.tgz",
- "integrity": "sha512-IoJCGid/NLqPFp+2qsumwOy1hG6jENKSIW9BozHL/3ZsjunH0P7iZLRMADljIuFntKlA63suPIPJWGR2SkxLIg==",
- "requires": {
- "js-yaml": "3.13.1",
- "json5": "0.5.0"
- },
- "dependencies": {
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
- },
- "js-yaml": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
- "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "json5": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.0.tgz",
- "integrity": "sha1-myBxWwJsvjd4/Xae3M2CLYMypbI="
- }
- }
- },
"iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@@ -15618,6 +15588,12 @@
"integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
"dev": true
},
+ "json-loader": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz",
+ "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==",
+ "dev": true
+ },
"json-parse-better-errors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
@@ -16524,7 +16500,7 @@
},
"readable-stream": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
@@ -16539,7 +16515,7 @@
},
"string_decoder": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"requires": {
diff --git a/package.json b/package.json
index 6ae94976..d16d7021 100644
--- a/package.json
+++ b/package.json
@@ -183,7 +183,6 @@
"hawk": "^7.0.10",
"hoek": "^6.1.3",
"i18next": "^12.1.0",
- "i18next-sync-fs-backend": "^1.1.1",
"lodash": "^4.17.15",
"megalodon": "2.0.1",
"moment": "^2.21.0",
@@ -266,6 +265,7 @@
"html-webpack-plugin": "^3.2.0",
"jest": "^24.5.0",
"jsdom": "^15.2.1",
+ "json-loader": "^0.5.7",
"listr": "^0.14.3",
"mini-css-extract-plugin": "^0.4.5",
"node-loader": "^0.6.0",
diff --git a/src/config/i18n.ts b/src/config/i18n.ts
index a581670c..dd764a2c 100644
--- a/src/config/i18n.ts
+++ b/src/config/i18n.ts
@@ -1,24 +1,66 @@
-import * as path from 'path'
import i18next, { InitOptions } from 'i18next'
-import Backend from 'i18next-sync-fs-backend'
+import cs from '~/src/config/locales/cs/translation.json'
+import de from '~/src/config/locales/de/translation.json'
+import en from '~/src/config/locales/en/translation.json'
+import es_es from '~/src/config/locales/es_es/translation.json'
+import fr from '~/src/config/locales/fr/translation.json'
+import ja from '~/src/config/locales/it/translation.json'
+import ko from '~/src/config/locales/ko/translation.json'
+import no from '~/src/config/locales/no/translation.json'
+import pl from '~/src/config/locales/pl/translation.json'
+import pt_pt from '~/src/config/locales/pt_pt/translation.json'
+import ru from '~/src/config/locales/ru/translation.json'
+import sv_se from '~/src/config/locales/sv_se/translation.json'
+import zh_cn from '~/src/config/locales/zh_cn/translation.json'
const options: InitOptions = {
initImmediate: false,
lng: 'en',
fallbackLng: 'en',
saveMissing: true,
- backend: {
- // path where resources get loaded from
- loadPath: path.resolve(__dirname, './locales/{{lng}}/{{ns}}.json'),
-
- // path to post missing resources
- addPath: path.resolve(__dirname, './locales/en/{{ns}}.json'),
-
- // jsonIndent to use when storing json files
- jsonIndent: 2
+ resources: {
+ cs: {
+ translation: cs
+ },
+ de: {
+ translation: de
+ },
+ en: {
+ translation: en
+ },
+ es_es: {
+ translation: es_es
+ },
+ fr: {
+ translation: fr
+ },
+ ja: {
+ translation: ja
+ },
+ ko: {
+ translation: ko
+ },
+ no: {
+ translation: no
+ },
+ pl: {
+ translation: pl
+ },
+ pt_pt: {
+ translation: pt_pt
+ },
+ ru: {
+ translation: ru
+ },
+ sv_se: {
+ translation: sv_se
+ },
+ zh_cn: {
+ translation: zh_cn
+ }
}
}
-i18next.use(Backend).init(options)
+i18next.init(options)
export default i18next