diff --git a/packages/translate/src/index.js b/packages/translate/src/index.js index 911b003bfc4..c901c381602 100644 --- a/packages/translate/src/index.js +++ b/packages/translate/src/index.js @@ -151,6 +151,7 @@ util.inherits(Translate, common.Service); * }); */ Translate.prototype.detect = function(input, callback) { + var inputIsArray = Array.isArray(input); input = arrify(input); this.request({ @@ -176,7 +177,7 @@ Translate.prototype.detect = function(input, callback) { return result; }); - if (input.length === 1) { + if (input.length === 1 && !inputIsArray) { results = results[0]; } @@ -368,6 +369,7 @@ Translate.prototype.getLanguages = function(target, callback) { * }); */ Translate.prototype.translate = function(input, options, callback) { + var inputIsArray = Array.isArray(input); input = arrify(input); var body = { @@ -407,7 +409,7 @@ Translate.prototype.translate = function(input, options, callback) { var translations = resp.data.translations.map(prop('translatedText')); - if (body.q.length === 1) { + if (body.q.length === 1 && !inputIsArray) { translations = translations[0]; } diff --git a/packages/translate/test/index.js b/packages/translate/test/index.js index 5d4c60bbca1..00c034065ff 100644 --- a/packages/translate/test/index.js +++ b/packages/translate/test/index.js @@ -236,6 +236,16 @@ describe('Translate', function() { done(); }); }); + + it('should return an array if input was an array', function(done) { + translate.detect([INPUT], function(err, results, apiResponse_) { + assert.ifError(err); + assert.deepEqual(results, [expectedResults]); + assert.strictEqual(apiResponse_, apiResponse); + assert.deepEqual(apiResponse_, originalApiResponse); + done(); + }); + }); }); }); @@ -494,6 +504,14 @@ describe('Translate', function() { done(); }); }); + + it('should return an array if input was an array', function(done) { + translate.translate([INPUT], OPTIONS, function(err, translations) { + assert.ifError(err); + assert.deepEqual(translations, [expectedResults]); + done(); + }); + }); }); });