码迷,mamicode.com
首页 > Windows程序 > 详细

C# GoogleTranslate

时间:2015-08-04 15:50:50      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:

有的时候我们需要软件去翻译某些词条、举个例子我们做语音识别智能交互

用户说一大堆英语 机器识别后认不倒、因为我们只识别中文指令 那怎么办呢?

我们就的想办法让我们程序可以识别 老外用户说了什么 那我们该怎么办?这个

时候我们就需要翻译了、但翻译方面我没有见到过关于C#的离线库 只有在线的

不过也还好、看看微软的小娜机器人 它是识别用户说的内容 在通过必应搜索得

到很多信息、而我们给用户做的程序肯定不会向 微软小娜、苹果Siri 那么牛逼那

么智能、但是我们只需要软件可以识别出用户需要怎样操作软件就可以了 但是我

们现在的重点是如何去实现翻译,我一般常用GoogleTranslate不为别的翻译老外

帖子里面的内容谷歌是最好的、至少翻译过来能读懂五五之数 差不多了、

        public static string GoogleTranslate(string message)
        {
            string requiredURL = string.Format("http://translate.google.com/translate_a/single?client=t&sl={0}&tl={1}&hl=zh-CN&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&dt=at&ie=UTF-8&oe=UTF-8&srcrom=0&ssel=3&tsel=3&kc=0&tk=523084|487837&q={2}"
                    , "auto" // 自动检查语言
                    , CultureInfo.CurrentCulture.Name // Chinese (Simplified, China) / LCID 2052 / ACP && OEMCP 936
                    , UrlEncode(message, Encoding.Default)
                );
            string outerHTML = string.Empty;
            try
            {
                using (WebClient client = new WebClient())
                {
                    client.Encoding = Encoding.UTF8;
                    outerHTML = client.DownloadString(requiredURL);
                }
            }
            catch (WebException)
            {
                goto endTranslate;
            }
            if (outerHTML.Length > 0)
                outerHTML = Regex.Match(outerHTML,@"\x22([\s\S]+?)\x22").Groups[1].Value;
        endTranslate:
            return outerHTML;
        }

上面的代码只返回一个GoogleTranslate后的首选结果 但

是已经差不多了 我们识别用户说了什么 我很相信有绝对

条件大家都是采用识别音标的方式 虽然模糊性较高 但是

软件兼容用户怪怪的口音倒是一大助力 那些以后在讨论

你们也可以修改代码啦、GoogleTranslate后它返回一个

JSON格式的文本、你可以通过JSON解析的类搞定问题

        public static string UrlEncode(string URIstring, Encoding URIEncoding)
        {
            StringBuilder str = new StringBuilder();
            byte[] buf = URIEncoding.GetBytes(URIstring);
            for (int i = 0; i < buf.Length; i++)
                str.Append("%" + Convert.ToString(buf[i], 16));
            return Convert.ToString(str);
        }

上面是一个不标准的URL加密代码 不过GoogleTranslate

可以解析出正确的内容 所以不必采用标准的URL加密代码

而且GoogleTranslate服务器很给力 根本不担心多几个计算

会把GoogleTranslate服务器怎么样、

        [STAThread]
        unsafe static void Main()
        {
            Console.WriteLine(GoogleTranslate("hello world"));
            Console.ReadKey(false);
        }

上面是在Main方法中调用被编写好的GoogleTranslate的

部分、运行后立刻看到效果 相当给力?

    using System;
    using System.Globalization;
    using System.Net;
    using System.Text;
    using System.Text.RegularExpressions;

上面是依赖的命名空间、不复制也可以 反正你把鼠标放在代码上

面会提示你添加命名空间的、所以也不用担心代码运行不了的问题

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

C# GoogleTranslate

标签:

原文地址:http://blog.csdn.net/u012395622/article/details/47275409

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!