谷歌云翻译API翻译返回html转义文本



在我的应用程序中,我正在尝试使用Google Cloud Translation API将一些西班牙语文本翻译成英语。我注意到我在翻译后收到的文本是HTML转义的,这意味着"'"显示为"&#39<nospace>;"">"显示为"&gt;",依此类推

我还通过curl脚本使用其余的API检查了翻译,它给了我相同的转义结果-

curl --request GET 'https://translation.googleapis.com/language/translate/v2?key=$GOOGLE_API_KEY&q=Es%20un%20brillante%20d%C3%ADa%20soleado&target=en'

对这种卷曲的反应是-

{
"data": {
"translations": [
{
"translatedText": "It&#39;s a bright sunny day",
"detectedSourceLanguage": "es"
}
]
}
}

当我尝试在在线谷歌翻译中将相同的西班牙语文本翻译成英语时(即。,https://translate.google.com)我得到的英文文本是"这是一个阳光明媚的日子"。

我的第一个问题:这样做是出于某种原因吗?还是这是一个错误?

为了取消显示文本,我使用org.apache.commons.text.StringEscapeUtils.unescapeHtml4()-

StringEscapeUtils.unescapeHtml4(translation.getTranslatedText());

我的第二个问题:这是对翻译文本进行解封的正确方式吗?

这个问题类似于Google Translate API输出HTML实体

由于没有明确提供翻译格式,Google翻译API采用默认格式,即HTML。因此,它将返回html编码的字符串作为翻译文本。如果格式被明确地提供为"文本",则html编码将不会发生。

请求翻译的curl现在应该是这样的-

curl --request GET 'https://translation.googleapis.com/language/translate/v2?key=$GOOGLE_API_KEY&q=Es%20un%20brillante%20d%C3%ADa%20soleado&target=en&format=text'

响应为-

{
"data": {
"translations": [
{
"translatedText": "It's a bright sunny day",
"detectedSourceLanguage": "es"
}
]
}
}

因此,这里不需要对html进行unscaping,因为首先可以避免编码。

默认情况下,HTML将被转义,但format参数将把&#39;&quot;更改为'"

对于java,您可以访问format字段。

public static Translate.TranslateOption format(String format)

设置源文本的格式,以HTML(默认(或纯文本。html值表示html,text值表示表示纯文本。

例如,此处的引号:

$ curl -s -X POST -H "Content-Type: application/json"     -H "Authorization: Bearer "$(gcloud auth application-default print-access-token)     --data "{
'q': 'The three 'pyramids' in the Giza pyramid complex.',
'source': 'en',
'target': 'es' 
}" "https://translation.googleapis.com/language/translate/v2"
{
"data": {
"translations": [
{
"translatedText": "Las tres &#39;pirámides&#39; en el complejo piramidal de Giza."
}
]
}
}

将保留为CCD_ 11。

curl -s -X POST -H "Content-Type: application/json"     -H "Authorization: Bearer "$(gcloud auth application-default print-access-token)     --data "{
'q': 'The three 'pyramids' in the Giza pyramid complex.',
'source': 'en',
'target': 'es',
'format': 'text'
}" "https://translation.googleapis.com/language/translate/v2"
{
"data": {
"translations": [
{
"translatedText": "Las tres 'pirámides' en el complejo piramidal de Giza."
}
]
}
}

最新更新