如何为每个div创建微软或谷歌翻译按钮?
每个div都有不同语言的内容,我想为每个div添加一个翻译按钮,并使其仅响应以下链接中的按钮.
http://www.bing.com/widget/translator
但是当我使用上面链接中提到的代码时,它会翻译整个网页.我想通过点击相应的翻译按钮分别翻译每个div.
使用谷歌翻译可以轻松地完成同样的事情吗?
任何翻译对我都好请帮忙谢谢.
我想为每个div提供一个翻译按钮,以便用户可以将每个div翻译成他们想要的任何语言.
我的每个div都有一个id.
解决方法
下面我将解释如何开始使用Microsoft Translator API.可以通过Google Translate API实现相同的功能,但是对于我来说,MS更容易为MS提供2M字符/每月免费翻译,而Google最少收取1 $的测试费用.
先决条件:
>注册免费订阅Microsoft Translator.为此,您将被要求创建新的MS帐户或登录与现有的.
>在Azure Datamarket注册您的申请.
注册示例注意:这里有两个重要字段的客户端ID和客户机密码,您将需要它们进行访问令牌请求.
执行:
首先,API的每个请求应包括访问令牌.到期时间为10分钟,所以您必须在到期之前更新.理想情况下,应该在后端进行此过程,以保护您的客户机密码和结果(令牌到期时间)发送回Web应用程序.
Node.js示例:
var request = require("request"); var options = { method: 'POST',url: 'https://datamarket.accesscontrol.windows.net/v2/OAuth2-13/',form: { // Client ID & Client secret values (see screenshot) client_id: 'translator_3000',client_secret: 'ZP8LzjZkKuFAb2qa05+3nNq+uOcqzWK7e3J6qCN1mtg=',scope: 'http://api.microsofttranslator.com',grant_type: 'client_credentials' } }; request(options,function (error,response,body) { if (error) throw new Error(error); console.log(body); });
响应包含几个字段,包括access_token,使用其值进一步的请求.
{ "token_type": "http://schemas.xmlsoap.org/ws/2009/11/swt-token-profile-1.0","access_token": "http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=translator_3000&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=https%3a%2f%2fdatamarket.accesscontrol.windows.net%2f&Audience=http%3a%2f%2fapi.microsofttranslator.com&ExpiresOn=1435405881&Issuer=https%3a%2f%2fdatamarket.accesscontrol.windows.net%2f&HMACSHA256=st9LJ0F8CKSa6Ls59gQN0EqMWLFed5ftkJiOCVXE4ns%3d","expires_in": "600","scope": "http://api.microsofttranslator.com" }
现在,当我们有访问令时,是翻译请求的时候了.注意:这些是JSONP请求,访问令牌是使用格式Bearer< token>的查询字符串参数appId提供的. (以空格分隔).查询字符串还包括文本参数 – 您的帖子的文本以及用户选择的参数 – 语言代码,所有支持的代码列表和您可以从API获得的语言友好名称.
这里是例子:
var settings = { "url": "https://api.microsofttranslator.com/v2/Ajax.svc/Translate","method": "GET","dataType": "jsonp","jsonp" : "oncomplete","data" : { "text" : "Good Morning StackOverflow","to" : "uk","appId" : "Bearer http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=translator_3000&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=https%3a%2f%2fdatamarket.accesscontrol.windows.net%2f&Audience=http%3a%2f%2fapi.microsofttranslator.com&ExpiresOn=1435405881&Issuer=https%3a%2f%2fdatamarket.accesscontrol.windows.net%2f&HMACSHA256=st9LJ0F8CKSa6Ls59gQN0EqMWLFed5ftkJiOCVXE4ns%3d" } } $.ajax(settings).done(function (response) { console.log(response); });
响应是翻译的字符串,以替换为原始文本:
"Доброго ранку StackOverflow"
最后,所有语言代码:
http://api.microsofttranslator.com/V2/Ajax.svc/GetLanguagesForTranslate
http://api.microsofttranslator.com/V2/Ajax.svc/GetLanguageNames?locale=en&languageCodes=["en","de","es","uk"]