借助Bing Translate API翻译API实现网站多国语言翻译功能

时间:2024-02-23 07:30:03

  前几天发了篇《借助Google Translate API实现网站多国语言翻译功能》,但好心人告诉我,谷歌即将关闭一些API,其中就包括谷歌翻译的API,以下是原文:

最近Google宣布将关闭一批API,被称为“春季大扫除”,其中包括了Translate API(12月1日彻底关闭)──无数开发者都在利用它打造丰富的翻译类第三方应用。Google对此的解释是说这些API给Google带来了巨大的经济负担,且存在大量的滥用行为。

  基于这种情况,我于是着手开始找其他实现办法,找了百度、搜狗、金山、有道,发现国内这些做翻译的,都没有一个成型的、对外的接口。无奈之余,想起了Bing,找了下,还真有开发者工具,啥也不说了,上Demo。

  中文 - 英文  英文 - 中文

  电锯惊魂2、3、4导演达伦斯·鲍斯曼的新片《母亲节》已经出下载了,此片翻拍1980年的恐怖片经典《Mother\'s Day》,由《推动摇篮的手》演技派女星蕾贝嘉·狄摩妮携手《3D血腥情人节》洁米金、《舞力全开》布莉安娜·艾维根、《噬血真爱》黛博拉安华尔及《X战警》尚恩·艾希摩(Shawn Ashmore)…等新生代帅哥美女偶像演出。

  实现代码如下:

        function translate() { //中文 - 英文
            window.mycallback = function(response) { $("p").html(response); }
            var s = document.createElement("script");
            s.src = "http://api.microsofttranslator.com/V2/Ajax.svc/Translate?oncomplete=mycallback&appId=A4D660A48A6A97CCA791C34935E4C02BBB1BEC1C&from=zh-cn&to=en&text=" + $("p").html();
            document.getElementsByTagName("head")[0].appendChild(s);
        }
        function translate2() { //英文 - 中文
            window.mycallback = function(response) { $("p").html(response); }
            var s = document.createElement("script");
            s.src = "http://api.microsofttranslator.com/V2/Ajax.svc/Translate?oncomplete=mycallback&appId=A4D660A48A6A97CCA791C34935E4C02BBB1BEC1C&from=en&to=zh-cn&text=" + $("p").html();
            document.getElementsByTagName("head")[0].appendChild(s);
        }

  更多接口文档请查看:Microsoft Translator V2 API,需要注意的是,使用Bing API的第一步就是去Bing Developer Center上去申请一个AppId,每个应用应该使用一个单独的AppId。在页面里先用Live ID登录,然后选择Get a new App ID,填写一些基本信息,然后你就会得到一串很长的AppId。

  最后,提供一个傻瓜网页翻译工具,与TranslateThis Button类似,是微软提供的一个网页在线翻译小工具,大家应该也看到有下角这个东西了吧,这个使用就比较简单了,到申请页面设置好后,把一段JS插到页面里就行了,申请地址:点击进入,最终生成的是一段类似于这样的代码:

<script id="MicrosoftTranslatorWidgetScript" type="text/javascript">/* <![CDATA[ */ setTimeout(function() { var s = document.createElement("script"); s.type = "text/javascript"; s.charset = "UTF-8"; s.src = ((location && location.href && location.href.indexOf(\'https\') == 0) ? "https://ssl.microsofttranslator.com" : "http://www.microsofttranslator.com" ) + "/ajax/v2/widget.aspx?siteData=NROHoI3oaj_KoRVH7WtBuQJ64x2eNXJK4KbfQk6f-zQ5PlXDd_9Z6FeiraMNlV7ONnQS8SlprkBxk6zOiVLuG9LGCd6pOSs3wFDI56ebaJSEJqeIz5GZl5G1e7o5zMig&mode=notify&from=zh-cn&layout=ts&toolbar=overlay&showLanguages=hi"; var p = document.getElementsByTagName(\'head\')[0] || document.documentElement; p.insertBefore(s, p.firstChild); }, 0); /* ]]> */</script>

附1:

  经测试发现,bing翻译有点小问题,会把标签里的内容也进行翻译,比如我要翻译的内容是:

<a href="http://tieba.baidu.com/电锯惊魂">电锯惊魂</a>

  google的翻译结果是:

<a href="http://tieba.baidu.com/电锯惊魂">saw</a>

  而bing的翻译结果则是:

<a href="http://tieba.baidu.com/chainsaw fright">chainsaw fright</a>

  bing不仅把a标签里的内容也进行了翻译,而且翻译还不是那么准确,看来bing在翻译这条道路还有很远要走,希望他能够完美的代替google translate的位置。