12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- /**
- * Changes the language in the translation files retrieved from Transifex.
- */
- const fs = require('fs');
- const I18N_DIRS = [ "./src/config/locales/ui", "./src/config/locales/presets" ];
- const JSON_RGX = /^[A-Za-z0-9_\-]+\.json$/;
- //Read translation files
- I18N_DIRS.forEach(i18n_dir => {
- fs.readdirSync(i18n_dir).forEach((file) => {
- if(JSON_RGX.test(file)) {
- const lng = file.substring(0, file.length - 5).replace("_", "-");
- try {
- //Read file
- const lngData = JSON.parse(fs.readFileSync(i18n_dir+"/"+file, 'utf8'));
- //If not already fixed
- if(lngData[lng] === undefined) {
- //Check if en available
- if(lngData["en"] !== undefined) {
- //Edit object, put en into lng locale
- const outData = {};
- outData[lng] = lngData.en;
- //Overwrite file
- fs.writeFile(i18n_dir+"/"+file, JSON.stringify(outData, null, 2), function(err) {
- if(err) {
- throw new Error(err);
- }
- else {
- console.log("[INFO] Translation file "+i18n_dir+"/"+file+" updated");
- }
- });
- }
- else {
- throw new Error("Unknown translation locale: "+i18n_dir+"/"+file);
- }
- }
- else {
- console.log("[INFO] Translation file "+i18n_dir+"/"+file+" already OK");
- }
- }
- catch(e) {
- if(e instanceof SyntaxError) {
- throw new Error("Invalid translation file: "+i18n_dir+"/"+file+" ("+e.message+")");
- }
- else {
- throw e;
- }
- }
- }
- else {
- console.log("[INFO] Ignored file "+i18n_dir+"/"+file);
- }
- });
- });
|