From c108d5c814361fbdb03a73c3b631d390a8e18559 Mon Sep 17 00:00:00 2001 From: JCH Date: Tue, 18 Dec 2018 17:10:48 +0100 Subject: [PATCH 1/2] fix(package): ignore IDE configuration --- .gitignore | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 43f07d1..434c6ac 100644 --- a/.gitignore +++ b/.gitignore @@ -63,4 +63,8 @@ typings/ # ignore this file that I sometime use while debugging temp.json -examples-output \ No newline at end of file +examples-output + +# ignore IDE configuration +.idea +.vscode From aeb5b941809de3023175375ec717c3b7e2e3acac Mon Sep 17 00:00:00 2001 From: JCH Date: Tue, 18 Dec 2018 17:11:10 +0100 Subject: [PATCH 2/2] feat(package): add another google tanslate package --- package-lock.json | 20 +++++++++++++++++ package.json | 1 + src/translate.js | 57 ++++++++++++++++++++++++++++++----------------- 3 files changed, 57 insertions(+), 21 deletions(-) diff --git a/package-lock.json b/package-lock.json index 95dc18a..4bf2785 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,26 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@vitalets/google-translate-api": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@vitalets/google-translate-api/-/google-translate-api-2.4.0.tgz", + "integrity": "sha512-Iq6ontpFviK+s7rta832DS+ItQRlcm2PhYmO8ZB3r0puFBVHFJtg5oRY4uQHwpTSnrJP0Rcb73z0QZzwtF5sdA==", + "requires": { + "@vitalets/google-translate-token": "^1.0.2", + "configstore": "^2.0.0", + "got": "^6.3.0", + "safe-eval": "^0.3.0" + } + }, + "@vitalets/google-translate-token": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@vitalets/google-translate-token/-/google-translate-token-1.0.2.tgz", + "integrity": "sha512-K5BmAQHQa70KCEaorMnCPxSTm8nrP84HukWmNDdS0Oy+DFJyuoBodT1d6Fe1ENUeCFHYI+1NJNwV7gmvdZ5rzA==", + "requires": { + "configstore": "^2.0.0", + "got": "^6.3.0" + } + }, "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", diff --git a/package.json b/package.json index f8b56f8..817a34d 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "translate-xlf": "./src/index.js" }, "dependencies": { + "@vitalets/google-translate-api": "^2.4.0", "bluebird": "^3.5.1", "chalk": "^2.4.1", "google-translate-api": "^2.3.0", diff --git a/src/translate.js b/src/translate.js index f7af261..151c80b 100644 --- a/src/translate.js +++ b/src/translate.js @@ -1,4 +1,5 @@ const googleTranslate = require('google-translate-api'); +const googleTranslateVitalets = require('@vitalets/google-translate-api'); const bluebird = require('bluebird'); const chalk = require('chalk'); const log = require('./log'); @@ -54,33 +55,47 @@ function translate(input, from, to) { // translation to the console, and replace the // property's value with the translation + const translateParams = { from: from, to: to }; const translatePromise = googleTranslate( textToTranslate, - { - from: from, - to: to - } - ).then(res => { - log( - 'Translating ' + + translateParams, + ) + .catch(() => + googleTranslateVitalets( + textToTranslate, + translateParams + ) + ) + .catch(() => + googleTranslateVitalets( + textToTranslate, + Object.assign( + translateParams, + { client: 'gtx' } + ) + ) + ) + .then(res => { + log( + 'Translating ' + chalk.yellow(textToTranslate) + ' to ' + chalk.green(res.text) - ); + ); - // update the object with the translation, - // make sure to match the format of the - // original element - if (_.isString(value[0])) { - xlfObj['target'] = res.text; - } else if ( - _.isObject(value[0]) && - value[0]['_'] - ) { - xlfObj['target'] = _.cloneDeep(value); - xlfObj['target'][0]['_'] = res.text; - } - }); + // update the object with the translation, + // make sure to match the format of the + // original element + if (_.isString(value[0])) { + xlfObj['target'] = res.text; + } else if ( + _.isObject(value[0]) && + value[0]['_'] + ) { + xlfObj['target'] = _.cloneDeep(value); + xlfObj['target'][0]['_'] = res.text; + } + }); allPromises.push(translatePromise); }