如何使用 /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 &lt;div class="notranslate"&gt;#responsibility&lt;/div&gt;
</string>