Browse Source

generate typescript during compilation

pull/1/head
Felix 2 years ago
committed by Felix Ableitner
parent
commit
60173a7581
  1. 25
      generate_translations.js
  2. 4
      package.json
  3. 53
      src/i18next.ts
  4. 4
      translation_report.ts
  5. 0
      translations/ca.json
  6. 0
      translations/de.json
  7. 0
      translations/en.json
  8. 0
      translations/eo.json
  9. 0
      translations/es.json
  10. 0
      translations/fa.json
  11. 0
      translations/fi.json
  12. 0
      translations/fr.json
  13. 0
      translations/it.json
  14. 0
      translations/nl.json
  15. 0
      translations/pt_br.json
  16. 0
      translations/ru.json
  17. 0
      translations/sv.json
  18. 0
      translations/zh.json
  19. 8
      yarn.lock

25
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);
}
});
});

4
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"

53
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 };

4
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' },

assets/translations/ca.json → translations/ca.json

assets/translations/de.json → translations/de.json

assets/translations/en.json → translations/en.json

assets/translations/eo.json → translations/eo.json

assets/translations/es.json → translations/es.json

assets/translations/fa.json → translations/fa.json

assets/translations/fi.json → translations/fi.json

assets/translations/fr.json → translations/fr.json

assets/translations/it.json → translations/it.json

assets/translations/nl.json → translations/nl.json

assets/translations/pt_br.json → translations/pt_br.json

assets/translations/ru.json → translations/ru.json

assets/translations/sv.json → translations/sv.json

assets/translations/zh.json → translations/zh.json

8
yarn.lock

@ -4572,10 +4572,10 @@ [email protected]^2.6.2:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c"
integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==
[email protected]^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==
[email protected]^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==
[email protected]^1.0.1, [email protected]^1.0.5:
version "1.0.6"

Loading…
Cancel
Save