Google 翻译 API: 启用单词转换

Google Translate API: Enable word conversion

我正在使用 google translate API 翻译一个单词列表,但是我注意到对于它无法翻译的单词,它 returns 源语言中的同一个单词.

例如我们观察下面的单词数组从英语到希伯来语的转换请求:

const response = await axios.post<TranslateResponse>(`https://translation.googleapis.com/language/translate/v2?key=xxxxxxx`,
            {
                "q": ["SUNFINSH", "DOG"],
                "source": "en",
                "target": "he",
                "format": "text"
            });

返回的对象是

{"data":{"translations":[{"translatedText":"SUNFINSH"},{"translatedText":"כֶּלֶב"}]}}

在上面的例子中,你可以看到它翻译了“DOG”,但无法翻译“SUNFISH”。

但是,如果我转到 translate.google.com,并输入“SUNFISH”,即使它没有在右侧面板上翻译它 UI,它确实提供了一种“文字”翻译,就好像它可以简单地将单词转换成希伯来语的发音。

问题是,如何使用 Google 翻译 API?

得到相同的结果

您可以尝试将“SUNFISH”更改为“sunfish”,它将return与您使用[=30=提供的屏幕截图相同的预期输出] 翻译 UI.

如使用 Google 翻译 UI 提供的屏幕截图所示,Google 首先将“SUNFISH”转换为“翻车鱼”,然后从那里将其翻译成希伯来语。

请看我测试的截图。

我还使用“Sunfish”进行了测试,并且在希伯来语中仍然得到了预期的结果。

另外,如官方所说google支持forum

Google Translate must be case sensitive as no two languages follow the same Capitalization rule.

下面是我测试时使用的示例代码,供大家参考。

// Imports the Google Cloud client library
const {Translate} = require('@google-cloud/translate').v2;

// Creates a client
const translate = new Translate();

 const text = ['sunfish', 'DOG'];
 const target = 'he';

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();