1

我在 HTML 文件中有一些文本内容,我需要根据用户输入动态翻译成不同的语言。我正在使用 Microsoft Translator AJAX 界面来做同样的事情。

现在 HTML 文件是这样的;

<h1><u>CSS3 Media Query Support in IE7/8<o:p></o:p></u></h1>
<p class=MsoNormal>Some other text content to be translated as well ...Some other text content to be translated as well ...Some other text content to be translated as well </p>

现在这只是我在这里展示的一个小片段。实际上这是一个巨大的标记(有很多样式标签)

我使用如下 API 进行翻译;

s.src = "http://api.microsofttranslator.com/V2/Ajax.svc/Translate?oncomplete=mycallback&appId=8B841CA7C1A03443682C52AD07B7775A7BD5B3AA&from=" + languageFrom + "&to=" + languageTo + "&text=" + text;

相同的参考是 http://msdn.microsoft.com/en-us/library/ff512404

我的问题是是否有任何方法可以让我只传递要翻译的文本(并且应该忽略标签)。我知道可以使用 innerText 属性来代替 innerHTML。但缺点是我只得到原始文本输出作为响应,我需要为样式重新创建 HTML。

4

1 回答 1

0

只需确保将contentType=text/html使用 innerHTML 获取的文本包含在 Translate API 调用中,您就可能取得成功。

否则,您需要遍历 html,一次提取文本以翻译一个部分,可能调用 BreakSentences API 提取单个句子,翻译,然后替换为翻译。批量处理段并调用 TranslateArray 会更有效。通过遍历 html 并仅通过带有内联标记的部分,可以混合这些方法。

无论如何,您可能会被迫遍历 html 以适应正在传递到 API 大小限制的文本。

于 2018-03-15T01:01:22.887 回答