如何使用客户端库将格式传递给 google 云翻译 API?

how to pass format to google cloud translation API using the client library?

我们在 express 应用程序中使用 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);
 });

有没有一种方法可以使用客户端库传递 'format' 等选项?

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

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

我收到一条错误消息:

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

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

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,如果您使用 cURL 发送类似于 this example. I have tried it myself with success. I have tried to do different manipulations with your code from snipper 1 with the request library, but it seems as if the request library is not passing the array correctly. I would generally suggest using the client library 的 POST 请求,它可以正常处理输入文本中的数组.

使用JSON.stringify

`https://translation.googleapis.com/language/translate/v2?q=${JSON.stringify([array]}`