Change auto-translate script name and accept google key as parameter

pull/3031/head
Marcelo Schmidt 9 years ago
parent f981572bc7
commit fe0863b0fb
No known key found for this signature in database
GPG Key ID: CA48C21A7B66097E
  1. 94
      private/node_scripts/auto-translate.js
  2. 71
      private/node_scripts/compare_langs.js

@ -0,0 +1,94 @@
var async = require('async');
var fs = require('fs');
var _ = require('underscore');
if (!process.argv[2]) {
console.error('\You must inform you Google API key: node auto-translate.js [google-api-key]\n');
process.exit();
}
var googleTranslate = require('google-translate')(process.argv[2]);
googleTranslate.getSupportedLanguages(function(err, langs) {
if (err) {
console.log(err);
return;
}
async.eachSeries(['../../packages/rocketchat-lib/i18n/', '../../packages/rocketchat-livechat/app/i18n/'], function(path, callback) {
console.log('Translating files in: ' + path);
var enContents = fs.readFileSync(path + 'en.i18n.json', 'utf-8');
var enUnsorted = JSON.parse(enContents);
var en = {};
_.keys(enUnsorted).sort(function(a, b) {
if (a.toLowerCase() !== b.toLowerCase()) {
return a.toLowerCase().localeCompare(b.toLowerCase());
} else {
return a.localeCompare(b);
}
}).forEach(function(key) {
en[key] = enUnsorted[key];
});
fs.writeFileSync(path + 'en.i18n.json', JSON.stringify(en, null, ' ').replace(/": "/g, '" : "'), 'utf8');
var files = fs.readdirSync(path);
async.eachSeries(files, function(file, callback) {
if (file === 'en.i18n.json') { return callback(); }
var lang = file.replace('.i18n.json', '');
var destContents = fs.readFileSync(path + file, 'utf-8');
var destJson = JSON.parse(destContents);
var toTranslate = {};
var newContent = {};
for (var key in en) {
if (en.hasOwnProperty(key)) {
key = key + '';
if (destJson[key]) {
newContent[key] = destJson[key];
} else {
newContent[key] = '';
toTranslate[key] = en[key];
}
}
}
var invertToTranslate = _.invert(toTranslate);
var toTranslateLang = _.keys(invertToTranslate);
if (lang === 'ms-MY') {
lang = 'ms';
}
if (lang === 'ta-IN') {
lang = 'ta';
}
if (lang === 'he') {
lang = 'iw';
}
if (langs.indexOf(lang) !== -1 && toTranslateLang.length > 1) {
console.log(lang, toTranslateLang.length);
googleTranslate.translate(toTranslateLang, 'en', lang, function(err, translations) {
if (err) {
console.log(lang, err);
} else {
for (var key in translations) {
if (translations.hasOwnProperty(key)) {
newContent[invertToTranslate[translations[key].originalText]] = translations[key].translatedText;
}
}
var newJsonString = JSON.stringify(newContent, null, ' ').replace(/": "/g, '" : "');
fs.writeFileSync(path + file, newJsonString, 'utf8');
setTimeout(function() { return callback(); }, 1000);
}
});
} else {
return callback();
}
}, function() {
return callback();
});
});
});

@ -1,71 +0,0 @@
var async = require('async');
var fs = require('fs');
var _ = require('underscore');
var googleTranslate = require('google-translate')('insert google api key here');
var path = '../../packages/rocketchat-lib/i18n/';
var enContents = fs.readFileSync(path + 'en.i18n.json', 'utf-8');
var en = JSON.parse(enContents);
googleTranslate.getSupportedLanguages(function(err, langs) {
if (err) {
console.log(err);
return;
}
var files = fs.readdirSync(path);
async.eachSeries(files, function(file, callback) {
if (file === 'en.i18n.json') { return callback(); }
var lang = file.replace('.i18n.json', '');
var destContents = fs.readFileSync(path + file, 'utf-8');
var destJson = JSON.parse(destContents);
var toTranslate = {};
var newContent = {};
for (var key in en) {
if (en.hasOwnProperty(key)) {
if (destJson[key]) {
newContent[key] = destJson[key];
} else {
newContent[key] = '';
toTranslate[key] = en[key];
}
}
}
var invertToTranslate = _.invert(toTranslate);
var toTranslateLang = _.keys(invertToTranslate);
if (lang === 'ms-MY') {
lang = 'ms';
}
if (lang === 'ta-IN') {
lang = 'ta';
}
if (lang === 'he') {
lang = 'iw';
}
if (langs.indexOf(lang) !== -1 && toTranslateLang.length > 1) {
console.log(lang, toTranslateLang.length);
googleTranslate.translate(toTranslateLang, 'en', lang, function(err, translations) {
if (err) {
console.log(lang, err);
} else {
for (var key in translations) {
if (translations.hasOwnProperty(key)) {
newContent[invertToTranslate[translations[key].originalText]] = translations[key].translatedText;
}
}
var newJsonString = JSON.stringify(newContent, null, ' ').replace(/": "/g, '" : "');
fs.writeFileSync(path + file, newJsonString, 'utf8');
setTimeout(function() { return callback(); }, 1000);
}
});
} else {
return callback();
}
});
});
Loading…
Cancel
Save