]> Untitled Git - lemmy.git/commitdiff
generate typescript during compilation
authorFelix <me@nutomic.com>
Fri, 28 Feb 2020 21:18:47 +0000 (22:18 +0100)
committerFelix Ableitner <me@nutomic.com>
Sat, 29 Feb 2020 18:16:23 +0000 (19:16 +0100)
20 files changed:
.gitignore
ui/generate_translations.js [new file with mode: 0644]
ui/package.json
ui/src/i18next.ts
ui/translation_report.ts
ui/translations/ca.json [moved from ui/assets/translations/ca.json with 100% similarity]
ui/translations/de.json [moved from ui/assets/translations/de.json with 100% similarity]
ui/translations/en.json [moved from ui/assets/translations/en.json with 100% similarity]
ui/translations/eo.json [moved from ui/assets/translations/eo.json with 100% similarity]
ui/translations/es.json [moved from ui/assets/translations/es.json with 100% similarity]
ui/translations/fa.json [moved from ui/assets/translations/fa.json with 100% similarity]
ui/translations/fi.json [moved from ui/assets/translations/fi.json with 100% similarity]
ui/translations/fr.json [moved from ui/assets/translations/fr.json with 100% similarity]
ui/translations/it.json [moved from ui/assets/translations/it.json with 100% similarity]
ui/translations/nl.json [moved from ui/assets/translations/nl.json with 100% similarity]
ui/translations/pt_br.json [moved from ui/assets/translations/pt_br.json with 100% similarity]
ui/translations/ru.json [moved from ui/assets/translations/ru.json with 100% similarity]
ui/translations/sv.json [moved from ui/assets/translations/sv.json with 100% similarity]
ui/translations/zh.json [moved from ui/assets/translations/zh.json with 100% similarity]
ui/yarn.lock

index 90972df6a6469a5300832d321bb4dba62703bb20..2c0071a7131fa9460d78d5ecb366617f07386a12 100644 (file)
@@ -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 (file)
index 0000000..ee55731
--- /dev/null
@@ -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);
+    }
+  });
+});
index f49a98fd45211d01b082e1157f9b54df5645bf89..d24bc26579ef03b46f980cee2a97f7150a687dbf 100644 (file)
@@ -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"
index 36dc6f1d7837ee7810889338c78c1f7cc507ca56..0ee5b1a37158e5acea7c9b87a29979b8c93862f0 100644 (file)
@@ -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 };
index c010aee0e1df6b85f16627067ae6ad1b8facaf55..d68cb5e896626241a48d3dca6b3489b2fa44788f 100644 (file)
@@ -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' },
index 4cbc90d95899dac40ce02dc2f734c50dbf72dc85..441c9d4a92bd76900ae01bf3b4364fa7c231879b 100644 (file)
@@ -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"