最新C#调用Google即时翻译

主要是调用谷歌的翻译API进行翻译,WebRequest的请求,将获取到的翻译提取出来。下面上代码

需要用到一个的js文件:对获取到数据的过滤,命名为gettk.js

 

var b = function(a,b){for(var d = 0; d <b.length  -  2; d + = 3){var c = b.charAt(d + 2),c =“a”<= c?c.charCodeAt(0) -  87:数字(c),c =“+”== b.charAt(d + 1)?a >>> c:a << c;a =“+”== b.charAt(d)?a + c&4294967295:a ^ c}返回一个
}var tk = function(a,TKK){for(var e = TKK.split(“。”),h = Number(e [0])|| 0,g = [],d = 0,f = 0; f <a.length; f ++){var c = a.charCodeAt(f);128> c?g [d ++] = c:(2048> c?g [d ++] = c >> 6 | 192:(55296 ==(c&64512)&& f + 1 <a.length && 56320 ==(a.charCodeAt( f + 1)&64512)?(c = 65536 +((c&1023)<< 10)+(a.charCodeAt(++ f)&1023),g [d ++] = c >> 18 | 240,g [d ++] = c >> 12&63 | 128):g [d ++] = c >> 12 | 224,g [d ++] = c >> 6&63 | 128),g [d ++] = c&63 | 128)}a = h;for(d = 0; d <g.length; d ++)a + = g [d],a = b(a,“+ -a ^ + 6”);a = b(a,“+ -3 ^ + b + -f”);a ^ =数字(e [1])|| 0;0> a &&(a =(a&2147483647)+ 2147483648);a%= 1E6;返回a.toString()+“。” +(a ^ h)
}for(var d = 0; d <b.length  -  2; d + = 3){var c = b.charAt(d + 2),c =“a”<= c?c.charCodeAt(0) -  87:数字(c),c =“+”== b.charAt(d + 1)?a >>> c:a << c;a =“+”== b.charAt(d)?a + c&4294967295:a ^ c}返回一个
}var tk = function(a,TKK){for(var e = TKK.split(“。”),h = Number(e [0])|| 0,g = [],d = 0,f = 0; f <a.length; f ++){var c = a.charCodeAt(f);128> c?g [d ++] = c:(2048> c?g [d ++] = c >> 6 | 192:(55296 ==(c&64512)&& f + 1 <a.length && 56320 ==(a.charCodeAt( f + 1)&64512)?(c = 65536 +((c&1023)<< 10)+(a.charCodeAt(++ f)&1023),g [d ++] = c >> 18 | 240,g [d ++] = c >> 12&63 | 128):g [d ++] = c >> 12 | 224,g [d ++] = c >> 6&63 | 128),g [d ++] = c&63 | 128)}a = h;for(d = 0; d <g.length; d ++)a + = g [d],a = b(a,“+ -a ^ + 6”);a = b(a,“+ -3 ^ + b + -f”);a ^ =数字(e [1])|| 0;0> a &&(a =(a&2147483647)+ 2147483648);a%= 1E6;返回a.toString()+“。” +(a ^ h)
}

 

 

 

 

 

前台代码:

 

<Window x:Class =“Translate.MainWindow”的xmlns = “http://schemas.microsoft.com/winfx/2006/xaml/presentation”的xmlns:X = “http://schemas.microsoft.com/winfx/2006/xaml”Title =“Google翻译”高度=“439”宽度=“525”WindowStartupLocation =“CenterScreen”><网格><Grid.Background><ImageBrush ImageSource =“t012abd86418d9b50f9.jpg”/></Grid.Background><TextBlock Height =“23”Horizo​​ntalAlignment =“Left”Margin =“12,12,0,0”FontSize =“14”Name =“textBlock1”Text =“输入单词:”VerticalAlignment =“Top”/><TextBox Foreground =“Red”FontSize =“14”Background =“Transparent”Height =“94”Horizo​​ntalAlignment =“Left”Margin =“10,40,0,0”Name =“txtWord”VerticalAlignment =“Top”Width = “487”TextChanged =“txtWord_TextChanged”/><TextBox Foreground =“Red”FontSize =“14”Background =“Transparent”Height =“242”Horizo​​ntalAlignment =“Left”Margin =“10,157,0,0”Name =“txtResult”VerticalAlignment =“Top”Width =“487 “/></网格>
</窗口>的xmlns = “http://schemas.microsoft.com/winfx/2006/xaml/presentation”的xmlns:X = “http://schemas.microsoft.com/winfx/2006/xaml”Title =“Google翻译”高度=“439”宽度=“525”WindowStartupLocation =“CenterScreen”><网格><Grid.Background><ImageBrush ImageSource =“t012abd86418d9b50f9.jpg”/></Grid.Background><TextBlock Height =“23”Horizo​​ntalAlignment =“Left”Margin =“12,12,0,0”FontSize =“14”Name =“textBlock1”Text =“输入单词:”VerticalAlignment =“Top”/><TextBox Foreground =“Red”FontSize =“14”Background =“Transparent”Height =“94”Horizo​​ntalAlignment =“Left”Margin =“10,40,0,0”Name =“txtWord”VerticalAlignment =“Top”Width = “487”TextChanged =“txtWord_TextChanged”/><TextBox Foreground =“Red”FontSize =“14”Background =“Transparent”Height =“242”Horizo​​ntalAlignment =“Left”Margin =“10,157,0,0”Name =“txtResult”VerticalAlignment =“Top”Width =“487 “/></网格>
</窗口>


后台代码:需要添加MSScriptControl引用,解析Js文件

 

 

 #region方法/// <summary>正则校验/// </ summary>/// <param name =“str”> </ param>/// <param name =“matchStr”>正则</ param>/// <returns> </ returns>public static bool ValidateStr(string str,string matchStr){尝试{return System.Text.RegularExpressions.Regex.IsMatch(str,matchStr);}catch(例外){返回false;}}/// <summary>///谷歌翻译/// </ summary>/// <param name =“text”>待翻译文本</ param>/// <param name =“fromLanguage”>自动检测:auto </ param>/// <param name =“toLanguage”>中文:zh-CN,中文:en </ param>/// <returns>翻译后文本</ returns>public string GoogleTranslate(字符串文本,字符串fromLanguage,string toLanguage){CookieContainer cc = new CookieContainer();string GoogleTransBaseUrl =“https://translate.google.cn/”;var BaseResultHtml = GetResultHtml(GoogleTransBaseUrl,cc,“”);Regex re = new Regex(@“(?<= TKK =)(。*?)(?= \);)”);var TKKStr = re.Match(BaseResultHtml).ToString()+“)”; //在返回的HTML中正则匹配TKK的JS代码var TKK = ExecuteScript(TKKStr,TKKStr); //执行TKK代码,得到TKK值var GetTkkJS = File.ReadAllText(@“gettk.js”);var tk = ExecuteScript(“tk(\”“+ text +”\“,\”“+ TKK +”\“)”,GetTkkJS);string googleTransUrl =“https://translate.google.cn/translate_a/single?client=t&sl=”+ fromLanguage +“&tl =”+ toLanguage +“&hl = en&dt = at&dt = bd&dt = ex&dt = ld&dt = md&dt = qca&dt = rw&dt = rm&dt = ss&dt = t&ie = UTF-8&oe = UTF-8&otf = 1&ssel = 0&tsel = 0&kc = 1&tk =“+ tk +”&q =“+ HttpUtility.UrlEncode(text);var ResultHtml = GetResultHtml(googleTransUrl,cc,“”);dynamic TempResult = Newtonsoft.Json.JsonConvert.DeserializeObject(ResultHtml);string ResultText = Convert.ToString(TempResult [0] [0] [0]);return ResultText;}public string GetResultHtml(string url,CookieContainer cookie,string referer){var html =“”;var webRequest = WebRequest.Create(url)as HttpWebRequest;webRequest.Method =“GET”;webRequest.CookieContainer = cookie;webRequest.Referer = referer;webRequest.Timeout = 20000;webRequest.Headers.Add( “X-请求-随着:XMLHttpRequest的”);webRequest.Accept =“text / html,application / xhtml + xml,application / xml; q = 0.9,image / webp,* / *; q = 0.8”;webRequest.UserAgent = url; // useragent;使用(var webResponse =(HttpWebResponse)webRequest.GetResponse()){使用(var reader = new StreamReader(webResponse.GetResponseStream(),Encoding.UTF8)){html = reader.ReadToEnd();reader.Close();webResponse.Close();}}返回html;}/// <summary>///执行JS/// </ summary>/// <param name =“sExpression”>参数体</ param>/// <param name =“sCode”> JavaScript代码的字符串</ param>/// <returns> </ returns>私有字符串ExecuteScript(字符串sExpression,字符串sCode){MSScriptControl.ScriptControl scriptControl = new MSScriptControl.ScriptControl();scriptControl.UseSafeSubset = true;scriptControl.Language =“JScript”;scriptControl.AddCode(SCODE);尝试{string str = scriptControl.Eval(sExpression).ToString();返回str;}catch(Exception ex){string str = ex.Message;}return null;} #endregion/// <summary>正则校验/// </ summary>/// <param name =“str”> </ param>/// <param name =“matchStr”>正则</ param>/// <returns> </ returns>public static bool ValidateStr(string str,string matchStr){尝试{return System.Text.RegularExpressions.Regex.IsMatch(str,matchStr);}catch(例外){返回false;}}/// <summary>///谷歌翻译/// </ summary>/// <param name =“text”>待翻译文本</ param>/// <param name =“fromLanguage”>自动检测:auto </ param>/// <param name =“toLanguage”>中文:zh-CN,中文:en </ param>/// <returns>翻译后文本</ returns>public string GoogleTranslate(字符串文本,字符串fromLanguage,string toLanguage){CookieContainer cc = new CookieContainer();string GoogleTransBaseUrl =“https://translate.google.cn/”;var BaseResultHtml = GetResultHtml(GoogleTransBaseUrl,cc,“”);Regex re = new Regex(@“(?<= TKK =)(。*?)(?= \);)”);var TKKStr = re.Match(BaseResultHtml).ToString()+“)”; //在返回的HTML中正则匹配TKK的JS代码var TKK = ExecuteScript(TKKStr,TKKStr); //执行TKK代码,得到TKK值var GetTkkJS = File.ReadAllText(@“gettk.js”);var tk = ExecuteScript(“tk(\”“+ text +”\“,\”“+ TKK +”\“)”,GetTkkJS);string googleTransUrl =“https://translate.google.cn/translate_a/single?client=t&sl=”+ fromLanguage +“&tl =”+ toLanguage +“&hl = en&dt = at&dt = bd&dt = ex&dt = ld&dt = md&dt = qca&dt = rw&dt = rm&dt = ss&dt = t&ie = UTF-8&oe = UTF-8&otf = 1&ssel = 0&tsel = 0&kc = 1&tk =“+ tk +”&q =“+ HttpUtility.UrlEncode(text);var ResultHtml = GetResultHtml(googleTransUrl,cc,“”);dynamic TempResult = Newtonsoft.Json.JsonConvert.DeserializeObject(ResultHtml);string ResultText = Convert.ToString(TempResult [0] [0] [0]);return ResultText;}public string GetResultHtml(string url,CookieContainer cookie,string referer){var html =“”;var webRequest = WebRequest.Create(url)as HttpWebRequest;webRequest.Method =“GET”;webRequest.CookieContainer = cookie;webRequest.Referer = referer;webRequest.Timeout = 20000;webRequest.Headers.Add( “X-请求-随着:XMLHttpRequest的”);webRequest.Accept =“text / html,application / xhtml + xml,application / xml; q = 0.9,image / webp,* / *; q = 0.8”;webRequest.UserAgent = url; // useragent;使用(var webResponse =(HttpWebResponse)webRequest.GetResponse()){使用(var reader = new StreamReader(webResponse.GetResponseStream(),Encoding.UTF8)){html = reader.ReadToEnd();reader.Close();webResponse.Close();}}返回html;}/// <summary>///执行JS/// </ summary>/// <param name =“sExpression”>参数体</ param>/// <param name =“sCode”> JavaScript代码的字符串</ param>/// <returns> </ returns>私有字符串ExecuteScript(字符串sExpression,字符串sCode){MSScriptControl.ScriptControl scriptControl = new MSScriptControl.ScriptControl();scriptControl.UseSafeSubset = true;scriptControl.Language =“JScript”;scriptControl.AddCode(SCODE);尝试{string str = scriptControl.Eval(sExpression).ToString();返回str;}catch(Exception ex){string str = ex.Message;}return null;} #endregion

界面呈现:

 

<span style="color:#0000ff"><a data-cke-saved-href="https://jq.qq.com/?_wv=1027&k=579ylkn" href="https://jq.qq.com/?_wv=1027&k=579ylkn">点击加入QQ群,一起学习交流</a></span>

点击加入qq群,一起学习交流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/50431.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器自动翻译古文拼音 - 十大宋词 - 江城子·乙卯正月二十日夜记梦 苏轼

【苏轼】江城子乙卯正月二十日夜记梦||纪录片剪辑 江城子乙卯正月二十日夜记梦 宋苏轼 十年生死两茫茫&#xff0c;不思量&#xff0c;自难忘。 千里孤坟&#xff0c;无处话凄凉。 纵使相逢应不识&#xff0c;尘满面&#xff0c;鬓如霜。 夜来幽梦忽还乡&#xff0c;小轩窗&…

汉译英翻译,中译英翻译古诗词有哪些要求?

作为中华民族优秀传统文化的代表——中国古诗词&#xff0c;受到了越来越多翻译人员的关注&#xff0c;将中文古诗词翻译成英文&#xff0c;对于促进中国古典文化在西方的传播有重大意义。那么&#xff0c;在中译英翻译过程中&#xff0c;如何才能准确翻译古诗词?提升古诗英译…

机器自动翻译古文拼音 - 宋词 - 桂枝香 金陵怀古 王安石

桂枝香金陵怀古 北宋王安石 登临送目&#xff0c;正故国晚秋&#xff0c;天气初肃。 千里澄江似练&#xff0c;翠峰如簇。 归帆去棹斜阳里&#xff0c;背西风&#xff0c;酒旗斜矗。 彩舟云淡&#xff0c;星河鹭起&#xff0c;画图难足。 念往昔、繁华竞逐&#xff0c;叹门外…

机器自动翻译古文拼音 - 十大宋词 - 水调歌头 明月几时有 苏轼

水调歌头明月几时有 北宋苏轼 明月几时有&#xff0c;把酒问青天。 不知天上宫阙&#xff0c;今夕是何年。 我欲乘风归去&#xff0c;又恐琼楼玉宇&#xff0c;高处不胜寒。 起舞弄清影&#xff0c;何似在人间&#xff1f; 转朱阁&#xff0c;低绮户&#xff0c;照无眠。 不应…

5.5 万首唐诗、26 万首宋诗、2.1 万首宋词 Python助力中华古典文集数据库

熟悉橡皮擦的朋友都知道&#xff0c;橡皮擦最爱写的文章是关于 Python 的&#xff0c;但是呢&#xff0c;橡皮擦确实是一个产品经理&#xff0c;哈哈&#xff0c;所以每次给大家分享 Python 相关知识的时候&#xff0c;总想着自己是一个前端工程师&#xff08;好迷糊&#xff0…

模拟登录古诗词网

主要思路&#xff1a; 对登录界面发送请求&#xff0c;网址&#xff1a;https://so.gushiwen.cn/user/login.aspx?fromhttp://so.gushiwen.cn/user/collect.aspx由于该网址密码输错三次会有验证码&#xff0c;我们就需要第三方平台帮忙破解验证码。小编采用的斐斐打码平台&am…

随机古诗词

利用HTML CSS js 制作的随机游戏 <html> <head><meta charset"utf-8" /><title>随机古诗词</title><style>#box {width: 1000px;margin: 0 auto;background: rgb(3, 0, 7);color: rgb(11, 160, 224);height: 1000px;line-height…

机器自动翻译古文拼音 - 十大宋词 - 声声慢 寻寻觅觅 李清照

声声慢寻寻觅觅 宋李清照 寻寻觅觅&#xff0c;冷冷清清&#xff0c;凄凄惨惨戚戚。 乍暖还寒时候&#xff0c;最难将息。 三杯两盏淡酒&#xff0c;怎敌他、晚来风急。 雁过也&#xff0c;最伤心&#xff0c;却是旧时相识。 满地黄花堆积&#xff0c;憔悴损&#xff0c;如今…

app 上架到苹果应用商店

https://appstoreconnect.apple.com/ 登陆 可供销售 就是我的app提交申请并通过的状态 添加新建APP 信息 填写完就创建 按照提示进行填写 注意上传图片可以用苹果手机截屏 在做作图软件 做成需要得像素上传 重点记录 构建版本&#xff08;别的挺简单&#xff09; 打开m…

【考研初试】问题汇总及解答

●信息搜集 Q&#xff1a;哪里可以找考研资料&#xff1f; A&#xff1a;wx公众号、b站、知乎、csdn、王道论坛&#xff08;计算机考研&#xff09; &#xff08;资料一般是以百度网盘链接的形式分享&#xff0c;其实找网课视频最方便的是找到那种定期更新资料的网盘群&#x…

复试-专业问题

这是我的学长&#xff0c;SDZ学长整理&#xff0c;我就发出了&#xff0c;如果你们有幸去了浙大软科记得谢谢他&#xff0c;哈哈哈 这两种方法在形式上相像&#xff0c;其区别在于&#xff1a;pa是指针变量&#xff0c;a是数组名。值得注意的是&#xff1a;pa是一个可以变化的…

CPA2021_会计_东奥张志凤_02_会计概述、财务报告目标、会计基本假设和会计基础

文章目录 第一章 总论本章考情分析主要内容第一节 会计概述一、会计的定义二、会计的作用三、企业会计准则的制定与企业会计准则体系 第二节 财务报告目标、会计基本假设和会计基础一、财务报告目标二、会计基本假设三、会计基础 第一章 总论 本章考情分析 本章内容是会计准则…

20应用统计考研复试要点(part2)--统计学

学习笔记,仅供参考,有错必纠 具体原理:统计量及其抽样分布 ;数据的概括性度量 文章目录 贾俊平统计学数据的分布特征概率与概率分布统计量及其抽样分布贾俊平统计学 数据的分布特征 概率与概率分布 样本、事件和样本空间总体:是包含所研究的全部个体(数据)的集合。 样本:…

20应用统计考研复试要点(part24)--简答题

学习笔记,仅供参考,有错必纠 简答题 什么是数据的离散程度,列举5种,并说明其特点数据的离散程度反映的是各变量值远离其中心值的程度。 异众比率,是指非众数组的频数占总频数的比例,其计算公式为: 四分位差,也称为内距或四分间距,它是上四分位数与下四分位数之差用 Q d…

浙江工商大学813理学统计学复试常见问题整理总结——概率论部分

大家好&#xff01;本人是去年上岸浙江工商大学&#xff0c;本科是江苏省的一本&#xff0c;专业课成绩在135&#xff08;可以去官网查证&#xff09;。本人根据去年线上复试的个人情况并结合其他一些上岸的同学在复试中被问到的专业课问题进行整理汇总了如下的浙江工商大学813…

20应用统计考研复试要点(part1)--统计学

学习笔记,仅供参考,有错必纠 贾俊平统计学 数据的搜集 数据的来源统计数据主要来自两条渠道:一个是数据的间接来源,即数据是由别人通过调查或实验的方式搜集的,使用者只是找到它们并加以使用。另一个是通过自己的调查或实验活动,直接获得第一手数据,对此我们称为数据的直…

江西财经大学2016-2022年研究生试题解析总结

前言&#xff1a; 1.卷子中的部分答案并非唯一&#xff0c;仅供参考 2.本总结是按题型进行分类的 3.2022年题型略微进行了改变&#xff0c;添加了程序分析题 1. 根据要求写出C语言表达式 2016年&#xff08;20分&#xff09; &#xff08;1&#xff09;三元运算符 ※ 答&am…

前端请求,后台一直返回404路径报错

心塞&#xff0c;找了一下午404报错&#xff0c;看图&#xff0c;报错是这样的 首先先知道404是什么问题&#xff1a;404 客户端请求的资源或者数据不存在(发现请求接口404,有两种情况一种是咱们写错接口了或者服 务端还没部署&#xff0c;在加一个就是后台写错了) 可以看一下这…

HTTP Status 404错误分析及解决方法

这是我之前因为复制一个项目,然后启动服务器时在网页报的错误,我用的myeclipse2016,我最后解决了这个问题,方法如下: 1,选中项目名右键>>Properties>>web就会出现,这样的. 在箭头指位置改成你当前的项目名,如果可以改动那就成功,重启myeclipse.运行就可以. 如…

项目一直报404的各种原因及解决方法

项目一直报404的各种原因及解决方法 404找不到的路径或资源的情况会经常出现,那么怎么样排查才能快速解决问题呢? 1. 路径和文件名 项目报404&#xff0c;首先应该考虑路径和文件名的匹配问题&#xff0c;多半是文件放错位置&#xff08;一般不会放错&#xff0c;毕竟都会放…