http://translate.google.cn/translate_t
可以实现中文翻译成英文
例如:翻译“左边”
http://translate.google.cn/translate_t?langpair=zh-CN|en&text=左边#即可
如何在程序中取出翻译后<div id=result_box dir=\"ltr\"></div>之间的英文left.英文翻译中文我实现了,但中文翻译成英文老是乱码!

解决方案 »

  1.   

    以下是我的代码
        class GoogleTranslate
        {
            private int mode;//翻译类型,0英译汉,1汉译英
            public GoogleTranslate(int m)
            { 
                mode = m;
            }
            public string translate(string strText)
            {
                string str_translated;//存放翻译后的文本
                string url = getPostData(strText);
                string html = null;
                Encoding encode=null;
                WebRequest req = WebRequest.Create(url);
                WebResponse res = req.GetResponse();
                Stream reciverStream = res.GetResponseStream();
                switch (mode)
                {
                    case 0:  //0英译汉
                        encode =Encoding.GetEncoding("gb2312"); break;
                    case 1:  //1汉译英
                        encode = Encoding.Default; break;
                    default:
                        break;
                }
                StreamReader sr = new StreamReader(reciverStream, encode);
                char[] readbuffer = new char[256];
                int n = sr.Read(readbuffer, 0, 256);
                while (n > 0)
                {
                    string str = new string(readbuffer, 0, n);
                    html += str;
                    n = sr.Read(readbuffer, 0, 256);
                }
                str_translated = parseContent(html);
                return str_translated; 
            }  
            /// <summary>
            /// 获取含被翻译文本的URL网址
            /// </summary>
            /// <param name="str">str是被翻译的文本</param>
            /// <returns>http://translate.google.cn/translate_t?langpair=zh-CN|en&text=左边#</returns>
                    
            public string getPostData(string str)
            {
                string postData = "http://translate.google.cn/translate_t?langpair=";
                switch(mode)
                {
                    case 0:
                        postData+="en|zh-CN";break;
                    case 1:
                        postData+="zh-CN|en"; 
                        //str = UrlEncode(str); //对给定字符进行URL编码                    
                        break;
                    default :
                        break;
                }
                postData+="&text="+str+"#";//str是被翻译的文本
                return postData;
            }
            public string  parseContent(string Content)
            { 
                string obj="<div id=result_box dir=\"ltr\">";//str是被翻译的文本
                int i = Content.IndexOf(obj);
                int begin = i + obj.Length;
                int j=Content.IndexOf("</div>",begin);
                string result=Content.Substring (begin,j-begin);
                return result;
            }
            public string UrlEncode(string str)//对给定字符串str进行URL编码
            {
                byte[] byt = Encoding.Default.GetBytes(str);
                string desstr = "";
                for (int i = 0; i < byt.Length; i++)
                {
                    desstr += "%";
                    desstr += byt[i].ToString("X2");
                }
                return desstr;
            }
        }
      

  2.   

            private void button1_Click(object sender, EventArgs e)
            {
                string OldText = textBox1.Text.Trim();
                int mode;
                if (radioButton1.Checked == true)
                    mode = 1;
                else
                    mode = 0;
                GoogleTranslate gt = new GoogleTranslate(mode);
                string NewText = gt.translate(OldText);
                textBox2.Text = NewText;
            }
      

  3.   

    要将post过去的中文使用UTF8进行编码,改两个地方:public string getPostData(string str) 

      ....
                postData+="&text="+UrlEncode(str)+"#";//str是被翻译的文本 
                return postData; 

    public string UrlEncode(string str)//对给定字符串str进行URL编码 
            {
                byte[] byt = Encoding.UTF8.GetBytes(str);
                ...
            }
      

  4.   

    Google tanslate API
    http://googlesystem.blogspot.com/2008/03/google-launched-another-ajax-api-this.html
      

  5.   

        //-----------------------------------------------------------------------------
        //translate strToTranslate from fromLanguage to toLanguage
        //return the translated string
        //return empty string if error
        //some frequently used language abbrv:
        //Chinese Simplified:   zh-CN
        //Chinese Traditional:  zh-TW
        //English:              en
        //German:               de
        //Japanese:             ja
        //Korean:               ko
        //French:               fr    
        //more can be found at: 
        //http://code.google.com/intl/ru/apis/language/translate/v2/using_rest.html#language-params
        public string translateString(string strToTranslate, string fromLanguage, string toLanguage)
        {
            string translatedStr = "";
            string transRetHtml = "";        ////following refer: http://python.u85.us/viewnews-335.html
            //string googleTranslateUrl = "http://translate.google.cn/translate_t";
            //Dictionary<string, string> postDict = new Dictionary<string, string>();
            //postDict.Add("hl", "zh-CN");
            //postDict.Add("ie", "UTF-8");
            //postDict.Add("text", strToTranslate);
            //postDict.Add("langpair", fromLanguage + "|" + toLanguage);
            //const string googleTransHtmlCharset = "UTF-8";
            //string transRetHtml = getUrlRespHtml(googleTranslateUrl, null,googleTransHtmlCharset, postDict);
            ////http://translate.google.cn/#zh-CN/en/%E4%BB%96%E4%BB%AC%E6%98%AF%E8%BF%99%E6%A0%B7%E8%AF%B4%E7%9A%84
            //string googleTransBaseUrl = "http://translate.google.cn/#";
            //strToTranslate = "他们是这样说的";
            //string encodedStr = HttpUtility.UrlEncode(strToTranslate);
            //string googleTransUrl = googleTransBaseUrl + fromLanguage + "/" + toLanguage + "/" + encodedStr;
            //string transRetHtml = getUrlRespHtml(googleTransUrl);
            //http://translate.google.cn/translate_a/t?client=t&text=%E4%BB%96%E4%BB%AC%E6%98%AF%E8%BF%99%E6%A0%B7%E8%AF%B4%E7%9A%84&hl=zh-CN&sl=zh-CN&tl=en&ie=UTF-8&oe=UTF-8&multires=1&ssel=0&tsel=0&sc=1
            //strToTranslate = "他们是这样说的";
            string encodedStr = HttpUtility.UrlEncode(strToTranslate);
            string googleTransBaseUrl = "http://translate.google.cn/translate_a/t?";
            string googleTransUrl = googleTransBaseUrl;
            googleTransUrl  += "&client=" + "t";
            googleTransUrl += "&text=" + encodedStr;
            googleTransUrl += "&hl=" + "zh-CN";
            googleTransUrl += "&sl=" + fromLanguage;// source   language
            googleTransUrl += "&tl=" + toLanguage;  // to       language
            googleTransUrl += "&ie=" + "UTF-8";     // input    encode
            googleTransUrl += "&oe=" + "UTF-8";     // output   encode        try
            {
                transRetHtml = getUrlRespHtml(googleTransUrl);
                //[[["They say","他们是这样说的","","Tāmen shì zhèyàng shuō de"]],,"zh-CN",,[["They",[5],0,0,1000,0,1,0],["say",[6],1,0,1000,1,2,0]],[["他们 是",5,[["They",1000,0,0],["they are",0,0,0],["they were",0,0,0],["that they are",0,0,0],["they are the",0,0,0]],[[0,3]],"他们是这样说的"],["这样 说",6,[["say",1000,1,0],["said",0,1,0],["say so",0,1,0],["says",0,1,0],["say this",0,1,0]],[[3,6]],""]],,,[["zh-CN"]],1]
                
                if (extractSingleStr(@"\[\[\[""(.+?)"","".+?"",", transRetHtml, out translatedStr))
                {
                    //extrac out:They say
                }
            }
            catch
            {
                // if pass some special string, such as "彭德怀", then will occur 500 error
                // here tmp not process the error, just omit it here
            }
            
            return translatedStr;
        }    public string transZhcnToEn(string strToTranslate)
        {
            return translateString(strToTranslate, "zh-CN", "en");
        }