summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix <me@nutomic.com>2020-02-28 22:18:47 +0100
committerFelix Ableitner <me@nutomic.com>2020-02-29 19:16:23 +0100
commitd7f49cea9a809f9c24947e7c4c941118c22a1f86 (patch)
tree51d7b892838be93fbca4cf1993c8d711233d1205
parent51653015a075e23bbc26acec198ede785b857602 (diff)
generate typescript during compilation
-rw-r--r--.gitignore1
-rw-r--r--ui/generate_translations.js25
-rw-r--r--ui/package.json4
-rw-r--r--ui/src/i18next.ts53
-rw-r--r--ui/translation_report.ts4
-rw-r--r--ui/translations/ca.json (renamed from ui/assets/translations/ca.json)0
-rw-r--r--ui/translations/de.json (renamed from ui/assets/translations/de.json)0
-rw-r--r--ui/translations/en.json (renamed from ui/assets/translations/en.json)0
-rw-r--r--ui/translations/eo.json (renamed from ui/assets/translations/eo.json)0
-rw-r--r--ui/translations/es.json (renamed from ui/assets/translations/es.json)0
-rw-r--r--ui/translations/fa.json (renamed from ui/assets/translations/fa.json)0
-rw-r--r--ui/translations/fi.json (renamed from ui/assets/translations/fi.json)0
-rw-r--r--ui/translations/fr.json (renamed from ui/assets/translations/fr.json)0
-rw-r--r--ui/translations/it.json (renamed from ui/assets/translations/it.json)0
-rw-r--r--ui/translations/nl.json (renamed from ui/assets/translations/nl.json)0
-rw-r--r--ui/translations/pt_br.json (renamed from ui/assets/translations/pt_br.json)0
-rw-r--r--ui/translations/ru.json (renamed from ui/assets/translations/ru.json)0
-rw-r--r--ui/translations/sv.json (renamed from ui/assets/translations/sv.json)0
-rw-r--r--ui/translations/zh.json (renamed from ui/assets/translations/zh.json)0
-rw-r--r--ui/yarn.lock8
20 files changed, 74 insertions, 21 deletions
diff --git a/.gitignore b/.gitignore
index 90972df6..2c0071a7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@ docker/lemmy_mine.hjson
docker/dev/env_deploy.sh
build/
.idea/
+ui/src/translations
diff --git a/ui/generate_translations.js b/ui/generate_translations.js
new file mode 100644
index 00000000..ee55731b
--- /dev/null
+++ b/ui/generate_translations.js
@@ -0,0 +1,25 @@
+fs = require('fs');
+
+fs.mkdirSync('src/translations/', { recursive: true });
+fs.readdir('translations', (err, files) => {
+ files.forEach(filename => {
+ const lang = filename.split('.')[0];
+ try {
+ const json = JSON.parse(
+ fs.readFileSync('translations/' + filename, 'utf8')
+ );
+ var data = `export const ${lang} = {\n translation: {`;
+ for (var key in json) {
+ if (key in json) {
+ const value = json[key].replace(/"/g, '\\"');
+ data = `${data}\n ${key}: "${value}",`;
+ }
+ }
+ data += '\n },\n};';
+ const target = 'src/translations/' + lang + '.ts';
+ fs.writeFileSync(target, data);
+ } catch (err) {
+ console.error(err);
+ }
+ });
+});
diff --git a/ui/package.json b/ui/package.json
index f49a98fd..d24bc265 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -8,6 +8,7 @@
"scripts": {
"build": "node fuse prod",
"lint": "tsc --noEmit && eslint --report-unused-disable-directives --ext .js,.ts,.tsx src",
+ "prebuild": "node generate_translations.js",
"start": "node fuse dev"
},
"keywords": [],
@@ -25,7 +26,6 @@
"emoji-short-name": "^1.0.0",
"husky": "^4.2.1",
"i18next": "^19.0.3",
- "i18next-xhr-backend": "^2.0.0",
"inferno": "^7.0.1",
"inferno-i18next": "nimbusec-oss/inferno-i18next",
"inferno-router": "^7.0.1",
@@ -55,7 +55,7 @@
"ts-node": "^8.6.2",
"ts-transform-classcat": "^0.0.2",
"ts-transform-inferno": "^4.0.2",
- "typescript": "^3.7.5"
+ "typescript": "^3.8.3"
},
"engines": {
"node": ">=8.9.0"
diff --git a/ui/src/i18next.ts b/ui/src/i18next.ts
index 36dc6f1d..0ee5b1a3 100644
--- a/ui/src/i18next.ts
+++ b/ui/src/i18next.ts
@@ -1,24 +1,51 @@
import i18next from 'i18next';
import { getLanguage } from './utils';
-import XHR from 'i18next-xhr-backend';
+import { en } from './translations/en';
+import { eo } from './translations/eo';
+import { es } from './translations/es';
+import { de } from './translations/de';
+import { fr } from './translations/fr';
+import { sv } from './translations/sv';
+import { ru } from './translations/ru';
+import { zh } from './translations/zh';
+import { nl } from './translations/nl';
+import { it } from './translations/it';
+import { fi } from './translations/fi';
+import { ca } from './translations/ca';
+import { fa } from './translations/fa';
+import { pt_br } from './translations/pt_br';
+
+// https://github.com/nimbusec-oss/inferno-i18next/blob/master/tests/T.test.js#L66
+const resources = {
+ en,
+ eo,
+ es,
+ de,
+ zh,
+ fr,
+ sv,
+ ru,
+ nl,
+ it,
+ fi,
+ ca,
+ fa,
+ pt_br,
+};
function format(value: any, format: any, lng: any): any {
return format === 'uppercase' ? value.toUpperCase() : value;
}
-i18next
- .use(XHR)
- .init({
- debug: true,
- //load: 'languageOnly',
+i18next.init({
+ debug: false,
+ // load: 'languageOnly',
- // initImmediate: false,
- lng: getLanguage(),
- fallbackLng: 'en',
- interpolation: { format },
- backend: {
- loadPath: '/static/assets/translations/{{lng}}.json',
- }
+ // initImmediate: false,
+ lng: getLanguage(),
+ fallbackLng: 'en',
+ resources,
+ interpolation: { format },
});
export { i18next as i18n, resources };
diff --git a/ui/translation_report.ts b/ui/translation_report.ts
index c010aee0..d68cb5e8 100644
--- a/ui/translation_report.ts
+++ b/ui/translation_report.ts
@@ -11,7 +11,7 @@ import { nl } from './src/translations/nl';
import { it } from './src/translations/it';
import { fi } from './src/translations/fi';
import { ca } from './src/translations/ca';
-import { pt_BR } from './src/translations/pt_br';
+import { pt_br } from './src/translations/pt_br';
import fs from 'fs';
const files = [
@@ -24,7 +24,7 @@ const files = [
{ t: fr, n: 'fr' },
{ t: it, n: 'it' },
{ t: nl, n: 'nl' },
- { t: pt_BR, n: 'pt-br' },
+ { t: pt_br, n: 'pt-br' },
{ t: ru, n: 'ru' },
{ t: sv, n: 'sv' },
{ t: zh, n: 'zh' },
diff --git a/ui/assets/translations/ca.json b/ui/translations/ca.json
index e238ffa7..e238ffa7 100644
--- a/ui/assets/translations/ca.json
+++ b/ui/translations/ca.json
diff --git a/ui/assets/translations/de.json b/ui/translations/de.json
index 49b4b3df..49b4b3df 100644
--- a/ui/assets/translations/de.json
+++ b/ui/translations/de.json
diff --git a/ui/assets/translations/en.json b/ui/translations/en.json
index 54460022..54460022 100644
--- a/ui/assets/translations/en.json
+++ b/ui/translations/en.json
diff --git a/ui/assets/translations/eo.json b/ui/translations/eo.json
index 518e2eb4..518e2eb4 100644
--- a/ui/assets/translations/eo.json
+++ b/ui/translations/eo.json
diff --git a/ui/assets/translations/es.json b/ui/translations/es.json
index 61bebb97..61bebb97 100644
--- a/ui/assets/translations/es.json
+++ b/ui/translations/es.json
diff --git a/ui/assets/translations/fa.json b/ui/translations/fa.json
index c72c0219..c72c0219 100644
--- a/ui/assets/translations/fa.json
+++ b/ui/translations/fa.json
diff --git a/ui/assets/translations/fi.json b/ui/translations/fi.json
index feeb269b..feeb269b 100644
--- a/ui/assets/translations/fi.json
+++ b/ui/translations/fi.json
diff --git a/ui/assets/translations/fr.json b/ui/translations/fr.json
index 5f07d73a..5f07d73a 100644
--- a/ui/assets/translations/fr.json
+++ b/ui/translations/fr.json
diff --git a/ui/assets/translations/it.json b/ui/translations/it.json
index 50e621d9..50e621d9 100644
--- a/ui/assets/translations/it.json
+++ b/ui/translations/it.json
diff --git a/ui/assets/translations/nl.json b/ui/translations/nl.json
index d83128e9..d83128e9 100644
--- a/ui/assets/translations/nl.json
+++ b/ui/translations/nl.json
diff --git a/ui/assets/translations/pt_br.json b/ui/translations/pt_br.json
index 732ab632..732ab632 100644
--- a/ui/assets/translations/pt_br.json
+++ b/ui/translations/pt_br.json
diff --git a/ui/assets/translations/ru.json b/ui/translations/ru.json
index 4d708173..4d708173 100644
--- a/ui/assets/translations/ru.json
+++ b/ui/translations/ru.json
diff --git a/ui/assets/translations/sv.json b/ui/translations/sv.json
index 5457409c..5457409c 100644
--- a/ui/assets/translations/sv.json
+++ b/ui/translations/sv.json
diff --git a/ui/assets/translations/zh.json b/ui/translations/zh.json
index 6cf8a669..6cf8a669 100644
--- a/ui/assets/translations/zh.json
+++ b/ui/translations/zh.json
diff --git a/ui/yarn.lock b/ui/yarn.lock
index 4cbc90d9..441c9d4a 100644
--- a/ui/yarn.lock
+++ b/ui/yarn.lock
@@ -4572,10 +4572,10 @@ typescript@^2.6.2:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c"
integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==
-typescript@^3.7.5:
- version "3.7.5"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae"
- integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==
+typescript@^3.8.3:
+ version "3.8.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061"
+ integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==
uc.micro@^1.0.1, uc.micro@^1.0.5:
version "1.0.6"