关于C#窗体应用程序调用google翻译api的问题
2011-05-03 17:04
746 查看
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.IO; using TranslationAPI; using JSONUtil; namespace DrawToolsLib { class HandWhiteTarans { /// <summary> /// 使用WebRequest获取Google翻译后的内容 /// </summary> /// <param name="strTranslateString">需要翻译的内容</param> /// <param name="strRequestLanguage">原文语种</param> /// <param name="strResultLanguage">译文语种</param> /// <returns></returns> private string GetGoogleTrans(string strTransString,string strRequesLanguage,string strResultLanguage) { WebRequest request = HttpWebRequest.Create( "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" + strTransString + "&langpair=" + strRequesLanguage + "%7C" + strResultLanguage ); request.Credentials = CredentialCache.DefaultCredentials; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); reader.Close(); dataStream.Close(); response.Close(); return responseFromServer; } public string MultiLanguageTranslate(string strTranslateString, string strRequestLanguage, string strResultLanguage) { try { if (!string.IsNullOrEmpty(strTranslateString)) { TranslateString transtring = (TranslateString)Newtonsoft.Json.JsonConvert.DeserializeObject(GetGoogleTrans(strTranslateString,strRequestLanguage,strResultLanguage),typeof(TranslateString)); if (transtring.responseStatus == 200) return transtring.responseData.translatedText; else return "There was an error."; } else { return strTranslateString; } } catch (Exception e) { return e.Message; } } /// <summary> /// 翻译 /// 默认地将英文翻译成简体中文 /// </summary> /// <param name="TranslateString">需要翻译的内容</param> /// <returns></returns> public string TranslateEnglishToChinese(string strTranslateString) { return MultiLanguageTranslate(strTranslateString, "en", "zh-CN"); } /// <summary> /// 翻译 /// 默认地将简体中文翻译成英文 /// </summary> /// <param name="TranslateString">需要翻译的内容</param> /// <returns></returns> public string TranslateChineseToEnglish(string strTranslateString) { return MultiLanguageTranslate(strTranslateString, "zh-CN", "en"); } } /// <summary> /// 译文的反系列化类 /// </summary> public class TranslateString { private TranslatedText responsedata; public TranslatedText responseData { get { return responsedata; } set { responsedata = value; } } private string responsedetails; public string responseDetails { get { return responsedetails; } set { responsedetails = value; } } private int responsestatus; public int responseStatus { get { return responsestatus; } set { responsestatus = value; } } /**/ /// <summary> /// 译文内容 /// </summary> public class TranslatedText { private string translatedtext; public string translatedText { get { return translatedtext; } set { translatedtext = value; } } } }
下面则是在写字板中的调用,可以在手写板写完后直接翻译
private void btnTrans_Click(object sender, RoutedEventArgs e) { string t; HandWhiteTarans ht = new HandWhiteTarans(); if (Regex.Match(inkEdit.Text, @"(?isn)^((?<chinese>[/u4E00-/u9FA5]+)|(?<letter>[a-z]+)|(?<num>/d+))$").Success) { t = ht.TranslateChineseToEnglish(inkEdit.Text); isSpace = false; inkEdit.Text = t; return; } if(Regex.Match(inkEdit.Text,@"^[A_Za_z]").Success) { t = ht.TranslateEnglishToChinese(inkEdit.Text); isSpace = false; inkEdit.Text = t; return; } }
需要用到Newtonsoft.Json.dll文件
相关文章推荐
- 关于C#(或php)调用外部应用程序的问题(求大牛指导)
- [C#]关于调用Office应用程序后,程序不退出的问题
- 关于调用隐藏窗体的问题(C#)
- 关于在c#中创建用户控件后,winform应用程序在调用中无法通过点击用户控件的子控件为其自动添加事件代码的问题
- 关于WinRT中c++和c#相互调用的问题
- 关于C#调用Excel的资源占用问题
- 关于安卓调用C#的WebService上传图片问题(不使用ksoap2)
- 关于 C# 调用 ICTCLAS 逐句分词报异常的问题解决
- c#中跨线程调用windows窗体控件 .我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来做这个问题,下面我将详细的介绍。
- C# 解决调用winform窗体顶置且解决任务栏图片显示问题
- 一个关于C#中一次关闭多个子窗体的问题
- 关于c# 中调用webapi 的问题
- 关于c#调用matlab时,deploytool选项没有.NET Assembly的问题的解决
- c# 关于基类和子类的方法调用问题--总结
- 关于c#调用usb摄像头的回调码流解码问题
- 关于32位和64位部署出现C#调用动态库DLL不成功的问题
- 关于C#中实现两个应用程序消息通讯的问题
- 关于 c#导出 excel 遇到只能在执行 Render() 的过程中调用 RegisterForEventValidation的问题
- 关于C#基类和子类函数调用问题
- 关于WinRT中c++和c#相互调用的问题