在我的应用程序中,我正在尝试使用Google Cloud Translation API将一些西班牙语文本翻译成英语。我注意到我在翻译后收到的文本是HTML转义的,这意味着"'"
显示为"'<nospace>;"
,">"
显示为">"
,依此类推
我还通过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'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
参数将把'
和"
更改为'
和"
。
对于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 'pirámides' 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."
}
]
}
}