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.英文翻译中文我实现了,但中文翻译成英文老是乱码!
可以实现中文翻译成英文
例如:翻译“左边”
http://translate.google.cn/translate_t?langpair=zh-CN|en&text=左边#即可
如何在程序中取出翻译后<div id=result_box dir=\"ltr\"></div>之间的英文left.英文翻译中文我实现了,但中文翻译成英文老是乱码!
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;
}
}
{
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;
}
{
....
postData+="&text="+UrlEncode(str)+"#";//str是被翻译的文本
return postData;
}
public string UrlEncode(string str)//对给定字符串str进行URL编码
{
byte[] byt = Encoding.UTF8.GetBytes(str);
...
}
http://googlesystem.blogspot.com/2008/03/google-launched-another-ajax-api-this.html
//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");
}