translate/translate.js (127 lines of code) (raw):
// Copyright 2017 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
'use strict';
function detectLanguageSample(text) {
// [START translate_detect_language]
// Imports the Google Cloud client library
const {Translate} = require('@google-cloud/translate').v2;
// Creates a client
const translate = new Translate();
/**
* TODO(developer): Uncomment the following line before running the sample.
*/
// const text = 'The text for which to detect language, e.g. Hello, world!';
// Detects the language. "text" can be a string for detecting the language of
// a single piece of text, or an array of strings for detecting the languages
// of multiple texts.
async function detectLanguage() {
let [detections] = await translate.detect(text);
detections = Array.isArray(detections) ? detections : [detections];
console.log('Detections:');
detections.forEach(detection => {
console.log(`${detection.input} => ${detection.language}`);
});
}
detectLanguage();
// [END translate_detect_language]
}
function listLanguagesSample() {
// [START translate_list_codes]
// Imports the Google Cloud client library
const {Translate} = require('@google-cloud/translate').v2;
// Creates a client
const translate = new Translate();
async function listLanguages() {
// Lists available translation language with their names in English (the default).
const [languages] = await translate.getLanguages();
console.log('Languages:');
languages.forEach(language => console.log(language));
}
listLanguages();
// [END translate_list_codes]
}
function listLanguagesWithTargetSample(target) {
// [START translate_list_language_names]
// Imports the Google Cloud client library
const {Translate} = require('@google-cloud/translate').v2;
// Creates a client
const translate = new Translate();
/**
* TODO(developer): Uncomment the following line before running the sample.
*/
// const target = 'The target language for language names, e.g. ru';
async function listLanguagesWithTarget() {
// Lists available translation language with their names in a target language
const [languages] = await translate.getLanguages(target);
console.log('Languages:');
languages.forEach(language => console.log(language));
}
listLanguagesWithTarget();
// [END translate_list_language_names]
}
function translateTextSample(text, target) {
// [START translate_translate_text]
// Imports the Google Cloud client library
const {Translate} = require('@google-cloud/translate').v2;
// Creates a client
const translate = new Translate();
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// const text = 'The text to translate, e.g. Hello, world!';
// const target = 'The target language, e.g. ru';
async function translateText() {
// Translates the text into the target language. "text" can be a string for
// translating a single piece of text, or an array of strings for translating
// multiple texts.
let [translations] = await translate.translate(text, target);
translations = Array.isArray(translations) ? translations : [translations];
console.log('Translations:');
translations.forEach((translation, i) => {
console.log(`${text[i]} => (${target}) ${translation}`);
});
}
translateText();
// [END translate_translate_text]
}
function translateTextWithModelSample(text, target, model) {
// [START translate_text_with_model]
// Imports the Google Cloud client library
const {Translate} = require('@google-cloud/translate').v2;
// Creates a client
const translate = new Translate();
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// const text = 'The text to translate, e.g. Hello, world!';
// const target = 'The target language, e.g. ru';
// const model = 'The model to use, e.g. nmt';
async function translateTextWithModel() {
const options = {
// The target language, e.g. "ru"
to: target,
// Make sure your project is on the allow list.
// Possible values are "base" and "nmt"
model: model,
};
// Translates the text into the target language. "text" can be a string for
// translating a single piece of text, or an array of strings for translating
// multiple texts.
let [translations] = await translate.translate(text, options);
translations = Array.isArray(translations) ? translations : [translations];
console.log('Translations:');
translations.forEach((translation, i) => {
console.log(`${text[i]} => (${target}) ${translation}`);
});
}
translateTextWithModel();
// [END translate_text_with_model]
}
require('yargs')
.demand(1)
.command(
'detect <text..>',
'Detects the language of one or more strings.',
{},
async opts => await detectLanguageSample(opts.text)
)
.command(
'list [target]',
'Lists available translation languages. To language names in a language other than English, specify a target language.',
{},
async opts => {
if (opts.target) {
await listLanguagesWithTargetSample(opts.target);
} else {
await listLanguagesSample();
}
}
)
.command(
'translate <toLang> <text..>',
'Translates one or more strings into the target language.',
{},
async opts => await translateTextSample(opts.text, opts.toLang)
)
.command(
'translate-with-model <toLang> <model> <text..>',
'Translates one or more strings into the target language using the specified model.',
{},
async opts =>
await translateTextWithModelSample(opts.text, opts.toLang, opts.model)
)
.example('node $0 detect "Hello world!"', 'Detects the language of a string.')
.example(
'node $0 detect "Hello world!" "Goodbye"',
'Detects the languages of multiple strings.'
)
.example(
'node $0 list',
'Lists available translation languages with names in English.'
)
.example(
'node $0 list es',
'Lists available translation languages with names in Spanish.'
)
.example(
'node $0 translate ru "Good morning!"',
'Translates a string into Russian.'
)
.example(
'node $0 translate ru "Good morning!" "Good night!"',
'Translates multiple strings into Russian.'
)
.example(
'node $0 translate-with-model ru nmt "Good morning!" "Good night!"',
'Translates multiple strings into Russian using the Premium model.'
)
.wrap(120)
.recommendCommands()
.epilogue('For more information, see https://cloud.google.com/translate/docs')
.help()
.strict().argv;