你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
翻译文本。
请求的 URL
POST将请求发送到:
https://api.cognitive.microsofttranslator.com/translate?api-version=3.0
请参阅“虚拟网络支持 翻译器服务”所选网络和专用终结点配置和支持。
请求参数
在查询字符串上传递的请求参数包括:
必需的参数
| 查询参数 | Description |
|---|---|
| API版本 (api-version) |
必需参数。 客户端请求的 API 版本。 值必须是 3.0。 |
| 到 |
必需参数。 指定输出文本的语言。 目标语言必须是范围中包含的 translation支持语言之一。 例如,用于 to=de 翻译为德语。 可以通过在查询字符串中重复参数同时翻译为多种语言。 例如,用于 to=de&to=it 翻译为德语和意大利语。 |
可选参数
| 查询参数 | Description |
|---|---|
| 发件人 |
可选参数。 指定输入文本的语言。 通过使用 translation范围查找支持的语言,查找可从中翻译的语言。 如果未指定参数 from ,则应用自动语言检测来确定源语言。 使用动态字典功能时,必须使用 from参数而不是自动检测。
注意:动态字典功能区分大小写。 |
| textType |
可选参数。 定义翻译的文本是纯文本还是 HTML 文本。 任何 HTML 都需要是格式正确的完整元素。 可能的值为: plain (默认值)或 html。 |
| 分类 |
可选参数。 指定翻译类别(域)的字符串。 此参数用于从使用 自定义翻译生成的自定义系统获取翻译。 若要使用已部署的自定义系统,请将自定义翻译 项目详细信息 中的类别 ID 添加到类别参数。 默认值为: general. |
| profanityAction |
可选参数。 指定在翻译中应如何处理不雅内容。 可能的值为: NoAction (默认值), Marked或 Deleted。 若要了解处理亵渎行为的方法,请参阅 不雅内容处理。 |
| profanityMarker |
可选参数。 指定在翻译中应如何标记不雅内容。 可能的值为: Asterisk (默认值)或 Tag。 若要了解处理亵渎行为的方法,请参阅 不雅内容处理。 |
| includeAlignment |
可选参数。 指定是否包括从源文本到翻译文本的对齐投影。 可能的值为: true 或 false (默认值)。 |
| includeSentenceLength |
可选参数。 指定是否包括输入文本和已翻译文本的句子边界。 可能的值为: true 或 false (默认值)。 |
| suggestedFrom |
可选参数。 如果无法识别输入文本的语言,则指定回退语言。 省略参数时 from ,将应用语言自动检测。 如果检测失败,则假定语言 suggestedFrom 。 |
| fromScript |
可选参数。 指定输入文本的脚本。 |
| toScript |
可选参数。 指定已翻译文本的脚本。 |
| allowFallback |
可选参数。 指定当自定义系统不存在时,允许该服务回退到常规系统。 可能的值为: true (默认值)或 false。 allowFallback=false 指定翻译应仅使用为 category 请求指定的系统训练的系统。 如果从语言 X 到语言 Y 的翻译需要通过透视语言 E 链接,则链(X → E 和 E → Y)中的所有系统都需要自定义并具有相同类别。 如果未找到具有特定类别的系统,则请求将返回 400 状态代码。
allowFallback=true 指定当自定义系统不存在时,允许该服务回退到常规系统。 |
请求标头包括:
| Headers | Description |
|---|---|
| 身份验证标头 |
所需的请求标头。 请参阅 可用的身份验证选项。 |
| Content-Type |
所需的请求标头。 指定有效负载的内容类型。 接受的值为: application/json; charset=UTF-8。 |
| Content-Length |
可选。 请求正文的长度。 |
| X-ClientTraceId |
可选。 用于唯一标识请求的客户端生成的 GUID。 如果使用名为 < |
请求主体
请求正文是 JSON 数组。 每个数组元素都是一个 JSON 对象,其中包含一 Text个名为字符串属性,该属性表示要转换的字符串。
[
{"Text":"I would really like to drive your car around the block a few times."}
]
有关字符和数组限制的信息, 请参阅请求限制。
响应体
成功的响应是一个 JSON 数组,输入数组中的每个字符串都有一个结果。 结果对象包含以下属性:
detectedLanguage:通过以下属性描述检测到的语言的对象:language:一个字符串,表示检测到的语言的代码。score:指示结果置信度的浮点值。 分数介于零和 1 和低分数之间,表示置信度较低。
仅当请求语言自动检测时,该
detectedLanguage属性才存在于结果对象中。translations:翻译结果数组。 数组的大小与通过to查询参数指定的目标语言数匹配。 数组中的每个元素包括:to:表示目标语言的语言代码的字符串。text:一个字符串,提供翻译的文本。transliteration:一个对象,该对象在参数指定的toScript脚本中提供翻译的文本。script:指定目标脚本的字符串。text:一个字符串,用于在目标脚本中提供翻译的文本。
如果未进行音译,则不包括该
transliteration对象。-
alignment:具有名为proj单个字符串属性的对象,该属性将输入文本映射到翻译的文本。 仅当请求参数includeAlignment为true时,才提供对齐信息。 对齐方式作为以下格式的字符串值返回:[[SourceTextStartIndex]:[SourceTextEndIndex]–[TgtTextStartIndex]:[TgtTextEndIndex]]冒号分隔开始索引和结束索引,短划线分隔语言,空格分隔单词。 一个单词可以与另一种语言的零、一个或多个单词对齐,对齐的单词可以是不连续的。 如果没有可用的对齐信息,则对齐元素为空。 有关示例和限制,请参阅 “获取对齐信息 ”。
sentLen:一个对象,返回输入和输出文本中的句子边界。srcSentLen:一个整数数组,表示输入文本中句子的长度。 数组的长度是句子数,值是每个句子的长度。transSentLen:一个整数数组,表示翻译文本中句子的长度。 数组的长度是句子数,值是每个句子的长度。
仅当请求参数
为 时,才会包含句子边界。
sourceText:具有名为text单个字符串属性的对象,该属性在源语言的默认脚本中提供输入文本。sourceText仅当输入以不是语言的常用脚本表示的脚本中时,属性才存在。 例如,如果输入是用拉丁语脚本编写的阿拉伯语,那么sourceText.text将相同的阿拉伯语文本转换为阿拉伯脚本.
示例部分提供了 JSON 响应 示例 。
响应标头
| Headers | Description |
|---|---|
| X-requestid | 服务生成的值,用于标识用于故障排除的请求。 |
| X-mt-system | 指定用于翻译的每个“to”语言的翻译的系统类型。 该值是逗号分隔的字符串列表。 每个字符串都指示一种类型: 自定义 - 请求包括一个自定义系统,并在翻译期间使用了至少一个自定义系统。 团队 - 所有其他请求 |
| X 计量使用情况 | 指定翻译作业请求的消耗量(用户为其收费的字符数)。 例如,如果单词“Hello”从英语(en)翻译为法语(fr),则此字段返回值 5。 |
响应状态代码
以下是请求返回的可能 HTTP 状态代码。
| 状态代码 | Description |
|---|---|
| 200 | 成功。 |
| 400 | 其中一个查询参数缺失或无效。 在重试之前更正请求参数。 |
| 401 | 无法对请求进行身份验证。 检查凭据是否已指定且有效。 |
| 403 | 请求未获授权。 检查详细信息错误消息。 此状态代码通常表示你使用了试用版订阅提供的所有免费翻译。 |
| 408 | 无法满足请求,因为缺少资源。 检查详细信息错误消息。 当请求包含自定义类别时,此状态代码通常表示自定义翻译系统尚不可用于处理请求。 请求应在等待期后重试(例如 1 分钟)。 |
| 429 | 服务器拒绝了请求,因为客户端超出了请求限制。 |
| 500 | 发生意外错误。 如果错误仍然存在,请报告失败日期和时间、响应标头 X-RequestId 的请求标识符和请求标头 X-ClientTraceId 中的客户端标识符。 |
| 503 | 服务器暂时不可用。 重试请求。 如果错误仍然存在,请报告失败日期和时间、响应标头 X-RequestId 的请求标识符和请求标头 X-ClientTraceId 中的客户端标识符。 |
如果发生错误,请求将返回 JSON 错误响应。 错误代码是一个 6 位数的数字,它组合了 3 位 HTTP 状态代码,后跟一个 3 位数字,以进一步对错误进行分类。 可以在 v3 翻译器参考页上找到常见的错误代码。
例子
转换单个输入
此示例演示如何将单个句子从英语翻译为简体中文。
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=zh-Hans" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}]"
响应正文为:
[
{
"translations":[
{"text":"你好, 你叫什么名字?","to":"zh-Hans"}
]
}
]
该 translations 数组包含一个元素,该元素提供输入中单个文本片段的翻译。
使用语言自动检测翻译单个输入
此示例演示如何将单个句子从英语翻译为简体中文。 请求未指定输入语言。 改用源语言的自动检测。
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=zh-Hans" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}]"
响应正文为:
[
{
"detectedLanguage": {"language": "en", "score": 1.0},
"translations":[
{"text": "你好, 你叫什么名字?", "to": "zh-Hans"}
]
}
]
响应类似于上一示例中的响应。 由于请求了语言自动检测,响应还包括有关为输入文本检测到的语言的信息。 语言自动检测更适用于较长的输入文本。
使用音译进行翻译
让我们通过添加音译来扩展前面的示例。 以下请求要求使用拉丁文脚本编写的中文翻译。
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=zh-Hans&toScript=Latn" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}]"
响应正文为:
[
{
"detectedLanguage":{"language":"en","score":1.0},
"translations":[
{
"text":"你好, 你叫什么名字?",
"transliteration":{"script":"Latn", "text":"nǐ hǎo , nǐ jiào shén me míng zì ?"},
"to":"zh-Hans"
}
]
}
]
翻译结果现在包括一个 transliteration 属性,该属性使用拉丁字符提供翻译的文本。
翻译多段文本
一次翻译多个字符串只是在请求正文中指定字符串数组的问题。
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=zh-Hans" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}, {'Text':'I am fine, thank you.'}]"
响应包含所有文本片段的翻译顺序与请求中完全相同。 响应正文为:
[
{
"translations":[
{"text":"你好, 你叫什么名字?","to":"zh-Hans"}
]
},
{
"translations":[
{"text":"我很好,谢谢你。","to":"zh-Hans"}
]
}
]
翻译为多种语言
此示例演示如何在一个请求中将同一输入翻译为多种语言。
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=zh-Hans&to=de" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}]"
响应正文为:
[
{
"translations":[
{"text":"你好, 你叫什么名字?","to":"zh-Hans"},
{"text":"Hallo, was ist dein Name?","to":"de"}
]
}
]
处理亵渎行为
通常,翻译器服务保留翻译源中存在的亵渎内容。 猥亵程度和使字词不雅不同文化的上下文程度,因此目标语言中的亵渎程度可以放大或减少。
如果要避免在翻译中获取不雅内容,无论源文本中是否存在猥亵内容,都可以使用不雅内容筛选选项。 该选项允许你选择是要看到已删除的不雅内容,是否标记有适当的标记(提供添加自己的后处理选项),或者不采取任何作。 接受的 ProfanityAction 值为 Deleted, Marked和 NoAction (默认值)。
| Accepted ProfanityAction 值 | ProfanityMarker 值 | Action | 示例:源 - 西班牙语 | 示例:目标 - 英语 |
|---|---|---|---|---|
| NoAction | 违约。 与未设置选项相同。 不雅内容从源传递到目标。 |
Que coche de
<insert-profane-word> |
<什么是插入亵渎字>汽车 | |
| 标记 | 星号 | 星号替换亵渎词(默认值)。 |
Que coche de
<insert-profane-word> |
什么是一辆 *** 汽车 |
| 标记 | 标记 | 不雅字词被 XML 标记<不雅>内容包围...</亵渎。> |
Que coche de
<insert-profane-word> |
<什么是亵渎<>插入- 亵渎词></亵渎>汽车 |
| 已删除 | 从输出中删除不替换的不雅词。 |
Que coche de
<insert-profane-word> |
什么是汽车 |
在上面的示例中, <insert-profane-word> 是亵渎字词的占位符。
例如:
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=de&profanityAction=Marked" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'This is an <expletive> good idea.'}]"
此请求返回:
[
{
"translations":[
{"text":"Das ist eine *** gute Idee.","to":"de"}
]
}
]
儗:
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=de&profanityAction=Marked&profanityMarker=Tag" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'This is an <expletive> good idea.'}]"
最后一个请求返回:
[
{
"translations":[
{"text":"Das ist eine <profanity>verdammt</profanity> gute Idee.","to":"de"}
]
}
]
翻译包含标记的内容
通常翻译包含标记的内容,例如 HTML 页面的内容或 XML 文档中的内容。 使用标记翻译内容时包括查询参数 textType=html 。 此外,有时从翻译中排除特定内容会很有用。 可以使用特性 class=notranslate 来指定应保留其原始语言的内容。 在以下示例中,第一个 div 元素中的内容不会翻译,而第二 div 个元素中的内容将翻译。
<div class="notranslate">This will not be translated.</div>
<div>This will be translated. </div>
下面是演示的示例请求。
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=zh-Hans&textType=html" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'<div class=\"notranslate\">This will not be translated.</div><div>This will be translated.</div>'}]"
响应为:
[
{
"translations":[
{"text":"<div class=\"notranslate\">This will not be translated.</div><div>这将被翻译。</div>","to":"zh-Hans"}
]
}
]
获取对齐信息
对于源的每个单词,对齐方式将作为以下格式的字符串值返回。 每个单词的信息由空格分隔,包括非空格分隔语言(脚本),如中文:
[[SourceTextStartIndex]:[SourceTextEndIndex]–[TgtTextStartIndex]:[TgtTextEndIndex]] *
示例对齐字符串:“0:0-7:10 1:2-11:20 3:4-0:3 3:4-4:6 5:5-21:21”。
换句话说,冒号分隔开始索引和结束索引,短划线分隔语言,空格分隔单词。 一个单词可以与另一种语言的零、一个或多个单词对齐,对齐的单词可以是不连续的。 如果没有可用的对齐信息,则 Alignment 元素为空。 在这种情况下,该方法不返回任何错误。
若要接收对齐信息,请在查询字符串上指定 includeAlignment=true 。
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=fr&includeAlignment=true" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'The answer lies in machine translation.'}]"
响应为:
[
{
"translations":[
{
"text":"La réponse se trouve dans la traduction automatique.",
"to":"fr",
"alignment":{"proj":"0:2-0:1 4:9-3:9 11:14-11:19 16:17-21:24 19:25-40:50 27:37-29:38 38:38-51:51"}
}
]
}
]
对齐信息以 0:2-0:1开头,这意味着源文本中的前三个字符(The)映射到翻译文本中的前两个字符(La)。
局限性
获取对齐信息是一项实验性功能,可用于制作具有潜在短语映射的研究和体验的原型。 下面是不支持对齐方式的一些显著限制:
- 对齐方式不适用于 HTML 格式的文本,即 textType=html
- 仅针对语言对的子集返回对齐方式:
- 除中文、粤语(传统)或塞尔维亚语(西里尔文)以外的任何其他语言的英语
- 从日语到朝鲜语或从朝鲜语到日语
- 从日语到简体中文和简体中文到日语
- 从简体中文到繁体中文,从繁体中文到简体中文
- 如果句子是罐式翻译,则不会对齐。 罐式翻译的示例是
This is a test,I love you和其他高频率句子 - 应用任何方法以防止翻译时,对齐不可用,如此处所述
获取句子边界
若要在源文本和翻译文本中接收有关句子长度的信息,请在查询字符串上指定 includeSentenceLength=true 。
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=fr&includeSentenceLength=true" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'The answer lies in machine translation. The best machine translation technology cannot always provide translations tailored to a site or users like a human. Simply copy and paste a code snippet anywhere.'}]"
响应为:
[
{
"translations":[
{
"text":"La réponse se trouve dans la traduction automatique. La meilleure technologie de traduction automatique ne peut pas toujours fournir des traductions adaptées à un site ou des utilisateurs comme un être humain. Il suffit de copier et coller un extrait de code n'importe où.",
"to":"fr",
"sentLen":{"srcSentLen":[40,117,46],"transSentLen":[53,157,62]}
}
]
}
]
使用动态字典进行翻译
如果已知道要应用于单词或短语的翻译,则可以在请求中将其作为标记提供。 动态字典仅适用于适当的名词,例如个人名称和产品名称。 注意:动态字典功能区分大小写。
要提供的标记使用以下语法。
<mstrans:dictionary translation="translation of phrase">phrase</mstrans:dictionary>
例如,假设英语句子“单词单词是字典词条”。若要在翻译中保留单词 字形 ,请发送请求:
curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=de" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'The word <mstrans:dictionary translation=\"wordomatic\">wordomatic</mstrans:dictionary> is a dictionary entry.'}]"
结果是:
[
{
"translations":[
{"text":"Das Wort \"wordomatic\" ist ein Wörterbucheintrag.","to":"de"}
]
}
]
此动态字典功能的工作方式与使用或处理textType=html方式相同textType=text。 此功能应谨慎使用。 自定义翻译的适当且更好的方法是使用自定义翻译。 自定义翻译器充分利用上下文和统计概率。 如果可以创建在上下文中显示工作或短语的训练数据,则获得更好的结果。
了解有关自定义翻译器的详细信息。