播客 > 玩代码  >  使用Google的translate工具翻译 .NET translate API   | 登录  | RSS订阅地址  | Code平台

使用Google的translate工具翻译 .NET translate API

   很久前的一天,我想使用这个东西,然后看了下,GooGle的Translate工具目前没有公开API,还是一个逐渐完善的过程,另一方面,利用一段很小的程序就可以得到我们想要的效果。
   在这篇,我就利用C#写一个小程序,翻译:
   思路是这样的:
   
   1:发送POST(或者GET)
   2:获取POST(或者GET)的响应
   3:正则匹配我们想要的值。

   发生POST(或者GET)的函数:
  
    public static string GetGetRequest(string urlP,string encode){
        if(null==urlP) return null;
        string StrRetP = null;
        Stream dataStream = null;
        try{

            HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create(urlP);


            myHttpWebRequest.Timeout = 10000;     // 10 secs
            HttpWebResponse Objresponse =(HttpWebResponse)myHttpWebRequest.GetResponse();
            //Encoding enc = Encoding.GetEncoding(1252);  // Windows default Code Page
            if(Objresponse.StatusDescription == "OK"){//HttpStatusCode.OK
                dataStream = Objresponse.GetResponseStream ();
                Encoding objE = String.IsNullOrEmpty(encode)?Encoding.GetEncoding(0):Encoding.GetEncoding(encode);
                StreamReader r = new StreamReader(dataStream,objE);
                StrRetP= r.ReadToEnd();
            }
        }catch(Exception e){
            StrRetP =e.Message;
        }finally{
            if(null!=dataStream) dataStream.Close();
        }
        return StrRetP;
    }


这个我在前面的一些文章中有所介绍。


   然后正则匹配的函数:

    public static string GetMatchString(string text,string pattern,int point){
        if(String.IsNullOrEmpty(text)||String.IsNullOrEmpty(pattern))return String.Empty;
        Regex rx = new Regex(pattern,RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline);
        Match match = rx.Match(text);
        string word="";
        if (match.Success)    word = match.Groups[point].Value;
        return word.Trim();
    }


这个数根据一个正则表达数,返回匹配的值。

直接进入Main主体:
        public static void Main(string[] args){
            string mess ="我们";
            Console.WriteLine(HttpUtility.UrlEncode("我们"));
            mess = GetGetRequest("http://translate.google.com/translate_t?langpair="+HttpUtility.UrlEncode("zh-CN|en")+ "&text="+HttpUtility.UrlEncode(mess,System.Text.UnicodeEncoding.GetEncoding( "Gb2312")),"utf-8");
            //Console.WriteLine(mess);
            mess = GetMatchString(mess,@"(<div id=result_box dir=""ltr"">)([?:\s\S]*?)(</div>)",2);
            Console.WriteLine(mess);
        }


注意的是
HttpUtility.UrlEncode(mess,System.Text.UnicodeEncoding.GetEncoding( "Gb2312"))
这句,无法识别UrlEncode的字符编码,这里需要指明。

OK,然后csc了,编译一下,下载一下吧。


C# 使用Google的Translate API

然后再搞个PHP的。

ASP 使用Google的translate API
PHP使用Google的translate API
 Java (Jsp)使用Google的translate API
天气:大雨,ccdot发表于2008-6-12 10:23:42,阅读了631次,共有个0回复.

暂无评论

  1. 想要转载我文章的人滚远远的,能想多远,就滚多远。
  2. 不要提交任何带有网址URL信息的评论.
  3. 需要更多信息?请使用站内搜索,郁闷了?听听我在听什么吧!
用户名:*验证:看不清楚请点击刷新验证码*
内容: