1

我们在我们的快速应用程序中使用谷歌云翻译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);
 });

有没有办法可以使用客户端库传递诸如“格式”之类的选项?

  1. 如何在第一种方法中将字符串数组传递给选项对象的 q 属性(查询字符串)?如果我直接传递一个数组,例如:

    q: ['amore mio', 'grazie']

我收到一条错误消息:

RES:  400
Body:  {
  "error": {
    "code": 400,
    "message": "Required Text",
    "errors": [
      {
        "message": "Required Text",
        "domain": "global",
        "reason": "required"
      }
    ]
  }
}
4

3 回答 3

1

关于关于传递输入参数数组的问题 2,如果您使用 cURL 发送与此示例类似的 POST 请求,则此方法可以正常工作。我自己也试过了,很成功。我试图对您的代码从 snipper 1 与request库进行不同的操作,但似乎request库没有正确传递数组。我通常建议使用可以成功处理输入文本中的数组的客户端库。

于 2018-10-18T13:58:35.957 回答
0

好的,经过一番研究,我只是尝试传递带有格式和其他属性(如源语言和目标语言)而不是目标的选项对象,并且它起作用了。所以这可以通过以下方式实现:

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);
  });
于 2018-10-17T04:43:01.280 回答
0

使用 JSON.stringify

`https://translation.googleapis.com/language/translate/v2?q=${JSON.stringify([array]}`
于 2020-10-29T09:43:16.383 回答