如何使用 /TranslateArray 从翻译中排除文本
How to exclude text from translation using /TranslateArray
我们正在尝试使用 Microsoft Translator API 来批量翻译文本。每段文本都可能包含我们不想翻译的文本(通常是社交网络@handles 或主题标签)。我们已尝试像文档中所示那样包装文本的这些部分:
<div class="notranslate">This will not be translated.</div>
这在将文本传递给 /Translate 单个 API 时工作正常。但是,当我们将多段文本传递给 /TranslateArray API 时,我们无法计算出正确的语法。任何包含 notranslate div 的文本项都不会在响应中返回。
这是我们要使用的正文:
curl -i -X POST \
-H "Ocp-Apim-Subscription-Key:******" \
-H "Content-Type:text/html" \
-d \
'<TranslateArrayRequest>
<AppId />
<From>en</From>
<Options>
<ContentType xmlns="http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2">text/html</ContentType>
</Options>
<Texts>
<div xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">With great power comes great <div class="notranslate">#responsibility</div> </div>
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">Hello World</string>
</Texts>
<To>fr</To>
</TranslateArrayRequest>' \
'https://api.microsofttranslator.com/V2/Http.svc/TranslateArray'
关于实现此目的的正确格式有什么想法吗?
发布的部分与请求的架构不匹配:第一个 <div>
需要是 <string>
元素。
<Texts>
<div xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">With great power comes great <div class="notranslate">#responsibility</div> </div>
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">Hello World</string>
</Texts>
尝试:
<Texts>
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">With great power comes great <div class="notranslate">#responsibility</div> </string>
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">Hello World</string>
</Texts>
如果这不起作用,则可能是因为请求是 XML,您可能还需要 XML-escape 字符串元素中的标记:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
With great power comes great <div class="notranslate">#responsibility</div>
</string>
我们正在尝试使用 Microsoft Translator API 来批量翻译文本。每段文本都可能包含我们不想翻译的文本(通常是社交网络@handles 或主题标签)。我们已尝试像文档中所示那样包装文本的这些部分:
<div class="notranslate">This will not be translated.</div>
这在将文本传递给 /Translate 单个 API 时工作正常。但是,当我们将多段文本传递给 /TranslateArray API 时,我们无法计算出正确的语法。任何包含 notranslate div 的文本项都不会在响应中返回。
这是我们要使用的正文:
curl -i -X POST \
-H "Ocp-Apim-Subscription-Key:******" \
-H "Content-Type:text/html" \
-d \
'<TranslateArrayRequest>
<AppId />
<From>en</From>
<Options>
<ContentType xmlns="http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2">text/html</ContentType>
</Options>
<Texts>
<div xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">With great power comes great <div class="notranslate">#responsibility</div> </div>
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">Hello World</string>
</Texts>
<To>fr</To>
</TranslateArrayRequest>' \
'https://api.microsofttranslator.com/V2/Http.svc/TranslateArray'
关于实现此目的的正确格式有什么想法吗?
发布的部分与请求的架构不匹配:第一个 <div>
需要是 <string>
元素。
<Texts>
<div xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">With great power comes great <div class="notranslate">#responsibility</div> </div>
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">Hello World</string>
</Texts>
尝试:
<Texts>
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">With great power comes great <div class="notranslate">#responsibility</div> </string>
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">Hello World</string>
</Texts>
如果这不起作用,则可能是因为请求是 XML,您可能还需要 XML-escape 字符串元素中的标记:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
With great power comes great <div class="notranslate">#responsibility</div>
</string>