我们在快速应用程序中使用google cloud translation API。
我正在尝试使用客户端库进行翻译,而不是每次都发出API请求。
1.我想知道的是在使用客户端库时如何将格式(文本或html)之类的选项传递给api?
我可以这样使用requestjs
发出http请求来实现此目的:
var request = require('request');
var url = 'https://translation.googleapis.com/language/translate/v2';
var options1 = {
q: 'amore mio',
target: 'hi',
format: 'text',
source: 'it',
key: 'my API key'
}
request.post({url:url, qs:options1}, (err, res, body)=> {
if(err) {
console.log('ERR: ', err);
}
console.log('RES: ', res.statusCode);
console.log('Body: ', body);
})
但是使用客户端库的示例仅显示以下内容:
const {Translate} = require('@google-cloud/translate');
// Your Google Cloud Platform project ID
const projectId = 'YOUR_PROJECT_ID';
// Instantiates a client
const translate = new Translate({
projectId: projectId,
});
// The text to translate
const text = 'Hello, world!';
// The target language
const target = 'ru';
// Translates some text into Russian
translate
.translate(text, target)
.then(results => {
const translation = results[0];
console.log(`Text: ${text}`);
console.log(`Translation: ${translation}`);
})
.catch(err => {
console.error('ERROR:', err);
});
是否可以使用客户端库传递诸如“格式”之类的选项?
如何在第一个方法中将字符串数组传递给options对象的q属性(querystring)?如果我像这样直接传递数组:
q: ['amore mio', 'grazie']
我收到一条错误消息:
RES: 400
Body: {
"error": {
"code": 400,
"message": "Required Text",
"errors": [
{
"message": "Required Text",
"domain": "global",
"reason": "required"
}
]
}
}
答案 0 :(得分:1)
对于有关传递输入参数数组的问题2,如果您使用cURL发送类似于this example的POST请求,则此方法很好用。我自己成功地尝试过。我试图对带有request
库的snipper 1中的代码执行不同的操作,但似乎request
库未正确传递数组。我通常建议使用client library,它可以成功处理输入文本中的数组。
答案 1 :(得分:0)
好的,经过一番研究,我只是尝试将具有格式和其他属性(例如源语言和目标语言)的options对象而不是target传递给它,并且它起作用了。 因此,可以通过以下方式实现:
const options = {
to: target,
format: 'html',
prettyPrint: true
}
translate
.translate(text, options)
.then(results => {
const translation = results[0];
console.log('flag: ', Array.isArray(translation));
console.log(`Text: ${text}`);
console.log(`Translation: ${translation}`);
})
.catch(err => {
console.error('ERROR:', err);
});
答案 2 :(得分:0)
使用JSON.stringify
`https://translation.googleapis.com/language/translate/v2?q=${JSON.stringify([array]}`