强大的微软Microsoft Translator翻译接口
一、前言
当我们需要对日文、韩文等语言转换中文字符的时候,就用到了微软提供的翻译接口。
二、实现流程
1.首先注册一个账号 https://datamarket.azure.com/account
2.账户信息填写,注意国家/地区一定不要选择简体中文,以免后面找不到免费的功能,有些国家会有功能限制。

3.然后点击左侧的开发人员,注册一个应用程序

4.然后搜索Microsoft Translator,并点击进去,可以选择套餐,免费的话每个月只能转换两百万个字符,缴费就能选择更高级别套餐

5.现在我注册免费的,注册成功后,在我的账户-》我的数据里面可以看到
三、代码实现
private void button3_Click(object sender, EventArgs e)
{
string errorCode;
richTextBox1.Text = Biyabi.Common.MicrosoftTranslator.TranslateString(textBox1.Text, "ja", "zh-CHS", out errorCode);
textBox2.Text = errorCode;
}
public static class MicrosoftTranslator
{
/// <summary>
/// http方式
/// </summary>
/// <param name="text"></param>
/// <param name="fromCulture"></param>
/// <param name="toCulture"></param>
/// <param name="errorCode"></param>
/// <returns></returns>
public static string TranslateString(string text, string fromCulture, string toCulture, out string errorCode)
{
string translateResult = "";
errorCode = "";
AdmAccessToken admToken;
//使用应用程序名,密码
//AdmAuthentication admAuth = new AdmAuthentication("TranslateHelper", "******");
//使用账户名,密码
AdmAuthentication admAuth = new AdmAuthentication("应用程序客户端ID", "应用程序客户端密钥");
try
{
admToken = admAuth.GetAccessToken();
//string text = "查询条件";
//string from = "zh-CHS";
//string to = "en";
string uri = "http://api.microsofttranslator.com/v2/Http.svc/Translate?text="
+ System.Web.HttpUtility.UrlEncode(text)
+ "&from=" + fromCulture
+ "&to=" + toCulture;
string authToken = "Bearer" + " " + admToken.access_token;
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
httpWebRequest.Headers.Add("Authorization", authToken);
WebResponse response = null;
try
{
response = httpWebRequest.GetResponse();
using (Stream stream = response.GetResponseStream())
{
System.Runtime.Serialization.DataContractSerializer dcs = new System.Runtime.Serialization.DataContractSerializer(Type.GetType("System.String"));
translateResult = (string)dcs.ReadObject(stream);
}
}
catch (Exception e)
{
//MessageBox.Show(e.Message);
errorCode = e.Message;
}
}
catch (WebException e)
{
//ProcessWebException(e);
errorCode = e.Message;
}
catch (Exception ex)
{
//MessageBox.Show(ex.Message);
errorCode = ex.Message;
}
return translateResult;
}
//http://api.microsofttranslator.com/V2/Soap.svc 添加这个服务引用引用
/// <summary>
/// soap方式
/// </summary>
/// <param name="text"></param>
/// <param name="fromCulture"></param>
/// <param name="toCulture"></param>
/// <param name="errorCode"></param>
/// <returns></returns>
public static string TranslateStringBySoap(string text, string fromCulture, string toCulture, out string errorCode)
{
string translateResult = "";
errorCode = "";
AdmAccessToken admToken;
//使用应用程序名,密码
//AdmAuthentication admAuth = new AdmAuthentication("TranslateHelper", "******");
//使用账户名,密码
AdmAuthentication admAuth = new AdmAuthentication("应用程序客户端ID", "应用程序客户端密钥");
try
{
admToken = admAuth.GetAccessToken();
string authToken = "Bearer" + " " + admToken.access_token;
MicrosoftTranslatorService.LanguageServiceClient client = new MicrosoftTranslatorService.LanguageServiceClient();
translateResult = client.Translate(authToken, text, fromCulture, toCulture, "text/html", "", "general");
}
catch (WebException e)
{
errorCode = e.Message;
}
catch (Exception ex)
{
errorCode = ex.Message;
}
return translateResult;
}
private static void ProcessWebException(WebException e)
{
//MessageBox.Show(e.ToString());
// Obtain detailed error information
string strResponse = string.Empty;
using (HttpWebResponse response = (HttpWebResponse)e.Response)
{
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader sr = new StreamReader(responseStream, System.Text.Encoding.ASCII))
{
strResponse = sr.ReadToEnd();
}
}
}
//MessageBox.Show(string.Format("Http status code={0}, error message={1}", e.Status, strResponse));
}
}
[DataContract]
public class AdmAccessToken
{
[DataMember]
public string access_token { get; set; }
[DataMember]
public string token_type { get; set; }
[DataMember]
public string expires_in { get; set; }
[DataMember]
public string scope { get; set; }
}
public class AdmAuthentication
{
public static readonly string DatamarketAccessUri = "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13";
private string clientId;
private string cientSecret;
private string request;
public AdmAuthentication(string clientId, string clientSecret)
{
this.clientId = clientId;
this.cientSecret = clientSecret;
//If clientid or client secret has special characters, encode before sending request
this.request = string.Format("grant_type=client_credentials&client_id={0}&client_secret={1}&scope=http://api.microsofttranslator.com", HttpUtility.UrlEncode(clientId), HttpUtility.UrlEncode(clientSecret));
}
public AdmAccessToken GetAccessToken()
{
return HttpPost(DatamarketAccessUri, this.request);
}
private AdmAccessToken HttpPost(string DatamarketAccessUri, string requestDetails)
{
//Prepare OAuth request
WebRequest webRequest = WebRequest.Create(DatamarketAccessUri);
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.Method = "POST";
byte[] bytes = Encoding.ASCII.GetBytes(requestDetails);
webRequest.ContentLength = bytes.Length;
using (Stream outputStream = webRequest.GetRequestStream())
{
outputStream.Write(bytes, , bytes.Length);
}
using (WebResponse webResponse = webRequest.GetResponse())
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(AdmAccessToken));
//Get deserialized object from JSON stream
AdmAccessToken token = (AdmAccessToken)serializer.ReadObject(webResponse.GetResponseStream());
return token;
}
}
}
结果展示:


强大的微软Microsoft Translator翻译接口的更多相关文章
- 华为Mate 10牵手Microsoft Translator,让离线翻译可媲美在线神经网
编者按:日前,华为新发布的Mate 10手机系列采用Microsoft Translator技术实现了AI驱动型离线翻译功能.华为Mate 10是首款具有NPU(专用神经处理单元)的手机,可用于加速 ...
- Microsoft Translator发布粤语文本翻译
今天,Microsoft Translator发布了粤语的文本翻译,新的语言增加将继续丰富微软翻译产品的生态系统*,让更多组织和个人能够快速且高效地实现翻译应用.在中国,大有约5500万人使用粤语(语 ...
- 在Application中集成Microsoft Translator服务之翻译语言代码
Microsoft Translator支持多种语言,当我们获取服务时使用这些代码来表示我们是使用哪种语言翻译成什么语言,以下是相关语言对应的代码和中文名 为了方便我已经将数据库上传到云盘上,读者可 ...
- 微软 Microsoft
微软(Microsoft Corporation) (NASDAQ:MSFT,港交所:4338),是一家基于美国的跨国电脑科技公司,是世界PC(Personal Computer,个人计算机)机软件开 ...
- 在Application中集成Microsoft Translator服务之使用http获取服务
一.创建项目 首先我们来创建一个ASP.NET Application 选择时尚时尚最时尚的MVC,为了使演示的Demo更简单,这里选择无身份验证 二.创建相关类 项目需要引入之前两个类AdmAcce ...
- 在Application中集成Microsoft Translator服务之获取访问令牌
我在这里画了一张图来展示业务逻辑 在我们调用microsoft translator server之前需要获得令牌,而且这个令牌的有效期为10分钟.下表列出所需的参数和对于的说明 参数 描述 clie ...
- Microsoft Translator:打破语言障碍 拓展全球沟通新机遇
作者:Olivier Fontana, 微软研究院Microsoft Translator产品战略总监 世界越来越小,全球协作.共同创新已经成为常态.在微软研究院,我们对此尤为感同身受——从北京到雷德 ...
- Microsoft Translator:打破语言障碍 拓展全球沟通新机遇
Translator:打破语言障碍 拓展全球沟通新机遇"> 作者:Olivier Fontana, 微软研究院Microsoft Translator产品战略总监 世界越来越小,全球协 ...
- Microsoft Translator:消除面对面交流的语言障碍
Translator:消除面对面交流的语言障碍" title="Microsoft Translator:消除面对面交流的语言障碍"> James Simm ...
随机推荐
- php 异常捕获
1 首先是try,catch <?php $path = "D:\\in.txt"; try //检测异常 { file_open($path); } catch(Excep ...
- Spark运行问题备忘一(网络搜集)
问题一 ERROR storage.DiskBlockObjectWriter: Uncaught exception -9ca8//shuffle_1_1562_27 java.io.FileNot ...
- 存储过程中拼接sql的示例
create or replace package body CRF_CMS_DOCTOR_PKG is --根据医院查询医生PROCEDURE P_HOSPITALBYDOCTOR_LIST ( v ...
- 简单讲解iOS应用开发中的MD5加密的相关使用
简单讲解iOS应用开发中的MD5加密的相关使用 作者:文顶顶 字体:[增加 减小] 类型:转载 时间:2015-12-19 我要评论 这篇文章主要介绍了iOS应用开发中的MD5加密的相关使用, ...
- android popupwindow低版本报空指针
在项目中使用Popupwindow pop=new Popupwindow();在2.3版本报 异常信息: Exception: null 堆栈信息: android.widget.PopupWind ...
- JAVA中,数组的操作与排序
自己写了正向反向的冒泡排序,还用了静态和NEW方法实现. import java.util.Arrays; public class HelloJava { public static void ma ...
- GUI(主)线程与子线程之间的通信(用信号槽通讯)
在主线程上,可以控制子线程启动,停止,清零 如果子线程启动的话,每一秒钟会向主线程发送一个数字,让主线程更新界面上的数字. 程序截图: 上代码: #include <QtGui> #inc ...
- 为什么都反对XML而支持使用json呢?
一个使用上的因素:JSON的结构更容易映射至一般语言的数据结构. XML和JSON的主要组成成分: XML是element.attribute和element content. JSON是object ...
- HDU_2022——海选女主角
Problem Description potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业余时间挣点外快以养家糊口.“做什么比较挣钱呢?筛沙子没力气,看大门又不够帅...”potato ...
- Java多线程中变量的可见性
之所以写这篇博客, 是因为在csdn上看到一个帖子问的就是这个问题. 废话不多说, 我们先看看他的代码(为了减少代码量, 我将创建线程并启动的部分修改为使用方法引用). 1 2 3 4 5 6 7 8 ...