Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用micorosoft translator api翻译后,如何恢复原始文本_Javascript_Html_Microsoft Translator - Fatal编程技术网

Javascript 使用micorosoft translator api翻译后,如何恢复原始文本

Javascript 使用micorosoft translator api翻译后,如何恢复原始文本,javascript,html,microsoft-translator,Javascript,Html,Microsoft Translator,当用户单击我网页上的按钮时,我可以使用Microsoft translator API和AJAX调用将一个段落从英语翻译成西班牙语。我想让他们能够切换回原始文本,而不必将西班牙语文本翻译回英语。当我查看页面源代码时,我可以看到原始文本,但我不确定如何将其显示回用户 函数翻译() { var from=“en”,to=“es”,text=$('.Translate').text(); var s=document.createElement(“脚本”); s、 src=”http://api.m

当用户单击我网页上的按钮时,我可以使用Microsoft translator API和AJAX调用将一个段落从英语翻译成西班牙语。我想让他们能够切换回原始文本,而不必将西班牙语文本翻译回英语。当我查看页面源代码时,我可以看到原始文本,但我不确定如何将其显示回用户

函数翻译()
{
var from=“en”,to=“es”,text=$('.Translate').text();
var s=document.createElement(“脚本”);
s、 src=”http://api.microsofttranslator.com/V2/Ajax.svc/Translate" +
“?appId=承载”+编码组件(window.accessToken)+
“&from=“+encodeURIComponent(from))+
“&to=“+encodeURIComponent(to))+
“&text=“+encodeURIComponent(文本)+
“&oncomplete=MyCallback”;
文件。正文。附录子项;
}
函数MyCallback(响应)
{
$('.Translate')。文本(响应);
}

翻译
恢复
生存还是毁灭:这是一个问题:
受苦是否更高尚
凶残命运的投石器和箭,
或是拿起武器对抗浩瀚的麻烦,
通过反对结束他们?

查看页面源代码不会显示页面的当前HTML。问题是您的行
$('.Translate').text(响应)销毁页面上的原始文本


如果您希望能够切换回,则需要将翻译后的文本放入新的div。然后,您只需显示和隐藏div即可在显示的版本之间切换。

您可以在翻译前通过将原始文本存储在变量中,然后在
restore()中记住原始文本
函数您可以使用此变量的内容替换
文本。但是因为这个临时变量应该在不同的函数中设置并获取它的值,所以它应该在更高的范围内。在您的情况下,这将是一个全球性的,但请记住,这是不推荐的

var originalText; 

function Translate()
{
  var from = "en", to = "es", text = $('.Translate').text();

  originalText = text;

  var s = document.createElement("script");
  s.src = "http://api.microsofttranslator.com/V2/Ajax.svc/Translate" +
      "?appId=Bearer " + encodeURIComponent(window.accessToken) +
      "&from=" + encodeURIComponent(from) +
      "&to=" + encodeURIComponent(to) +
      "&text=" + encodeURIComponent(text) +
      "&oncomplete=MyCallback";
  document.body.appendChild(s);
}

function restore(){
   $('.Translate').text(originalText);
}

你能换个方向翻译吗?是的,但我相信这会计入我每月能翻译的字符数,我希望有更好的方法。另外,重新翻译的文本与原文不太一样。我不知道这个限制。David的解决方案似乎更加灵活,因为您可以附加多种语言的翻译。最终,您可以将翻译后的消息保存在一个单独的文件中(每种语言一个),只需在这些文件中查询具有给定密钥的消息即可。