关于谷歌翻译接口调用php方法
来源:互联网 发布:易语言游戏辅助源码 编辑:程序博客网 时间:2024/06/05 21:50
这两天在整数据库,发现里面好多数据翻译不准确,那么问题来了,从哪去找接口来翻译数据,请不起人,只有靠网上的翻译了,开始的时候发现谷歌以前的api翻译接口貌似收费了。。。我是个穷人,用不起,后来发现百度的可以用,就用了一下:
下面是代码:
$url = "http://openapi.baidu.com/public/2.0/bmt/translate?client_id=YourApiKey&q=today&from=auto&to=auto";
ob_start();
readfile($url);
$result = ob_get_contents();
ob_end_clean();
YourApiKey需要去百度申请,不花钱的亲。。
后来又发现百度翻译。。真的不准。。。又想用谷歌,所以在网上找了很多资料,发现还是有办法用的:
代码如下:
function getname($name) {
$urlqueue = "";
$contents = "";
$titles = "";
$str = "http://translate.google.cn/translate_a/t?client=t&text=".$name."&hl=zh-CN&sl=en&tl=zh-CN&ie=UTF-8&oe=UTF-8&multires=1&otf=1&pc=1&it=srcd_gms.1378&ssel=4&tsel=6&sc=1";
ob_start();
readfile($str);
$result = ob_get_contents();
ob_end_clean();
preg_match_all('/\[\[\[\"([\s\S]*?)\"/',$result,$match);
//$arr=json_decode($result,true);
$namenew = $match[1][0];
return $namenew;
}
在网上我借鉴的资料大家可以看看。。。。
今日,在想要在C#中,利用google翻译,实现把中文翻译为英文。
然后就去找,对应翻译的url和参数是如何使用的。
参考之前自己的的BlogsToWordpress中的Python版本的crifanLib:crifanLib.py中的translateString,然后去写代码,结果竟然发现,无法成功获得对应的返回的html,因此也就无法找到翻译后的结果了。
所以,就打算手动自己去找当前可用的google翻译。
1.找到网页版的google翻译,首地址是:
http://translate.google.cn/
然后使用之前在:
【总结】浏览器中的开发人员工具(IE9的F12和Chrome的Ctrl+Shift+I)-网页分析的利器
中所介绍的IE9的F12,去调试。
然后设置好
源语言:中文(简体)
目标语言:英文
然后再随便输入一串汉字,比如:
他们是这样说的
然后可以看到结果为:
其中,此处是自动实时翻译,所以没有点击翻译按钮,就可以看到翻译的结果:
They say
了。
2. 然后接下来去找,到底此翻译的请求,是哪个地址。
而对于IE9的F12中,抓到很多url,内容繁多,也不容易找到到底哪个是我们想要的。
但是我们现在已经知道了翻译结果为:
They say
所以,就可以通过F12自带的搜索功能,去找到对应的url了:
如上,再点击Back to summary view,就可以看到是这个地址了:
对应的地址,在Detail view中,拷贝出来就是:
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&otf=1&pc=1&it=srcd_gms.1378&ssel=4&tsel=6&sc=1
然后将其分解为:
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&
otf=1&
pc=1&
it=srcd_gms.1378&
ssel=4&
tsel=6&
sc=1
3. 由此信息,便可以去写代码了。
经过一番代码调试,最后搞定:
//-----------------------------------------------------------------------------
//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"
);
}
【总结】
此处通过自己调试,找到的google翻译的api为:
基地址:
http://translate.google.cn/translate_a/t?
一些固定参数:
client=t
hl=zh-CN:表示本地语言是zh-CN
需要自己设置的参数:
text=%E4%BB%96%E4%BB%AC%E6%98%AF%E8%BF%99%E6%A0%B7%E8%AF%B4%E7%9A%84: 需要翻译的文字,被encode后的值,%E4%BB%96%E4%BB%AC%E6%98%AF%E8%BF%99%E6%A0%B7%E8%AF%B4%E7%9A%84对应的原文字是:他们是这样说的。
sl=zh-CN:source language为zh-CN,即需要翻译的文字是中文简体
tl=en:to language,目标语言为en,即要翻译为英语
ie=UTF-8:input encoding,输入的文字的编码为UTF-8
oe=UTF-8:output encoding,输出,翻译后,的文字的编码为UTF-8
其他可有可无的参数:
multires=1
otf=1
pc=1
it=srcd_gms.1378
ssel=4
tsel=6
sc=1
其中,最最核心的很明显是sl和tl,相对次要的是ie和oe。
自己根据自己的需要,设置text,sl,tl,(和ie和oe),提交对应的请求,即可获得如下的返回内容:
[[["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]
提取其中的最开始的They say,即可实现翻译的目的了。
【后记 2014-05-19】
1.后来遇到别人问我要相关的完整源码,所以在此一并回答:
直接去:
https://code.google.com/p/crifanlib/
->
https://code.google.com/p/crifanlib/source/checkout
->
浏览Browser
或者下载checkout
对应的:
crifanLib.cs
https://code.google.com/p/crifanlib/source/browse/trunk/csharp/crifanLib.cs
其中就有你要的translateString的源码
注:
(1)
关于我的库函数代码如何使用,可以去看我的配套教程:
- 9.9. (谷歌)翻译一段话:translateString
- 9.10. 将中文翻译为英文:transzhcntoen
(2)
https://code.google.com/p/crifanlib/source/browse/#svn%2Ftrunk%2Fcsharp
中,还有其他更多相关的,比如:
crifanLibGoogle.cs
https://code.google.com/p/crifanlib/source/browse/trunk/csharp/crifanLibGoogle.cs
感兴趣的话,你也可以看看。
- 关于谷歌翻译接口调用php方法
- PHP调用谷歌翻译
- php 调用谷歌翻译
- PHP调用谷歌翻译实现翻译功能
- php调用webservice接口封装方法
- php调用Python接口的方法
- php调用接口的方法 curl
- Google翻译PHP接口
- 关于接口调用的方法和理解
- 关于接口里面的方法的调用
- php谷歌翻译
- 调用Google翻译 语音接口
- 调用Google翻译 语音接口
- python调用百度翻译接口
- java调用有道翻译接口
- 谷歌翻译小接口
- 关于php静态方法间的调用
- Google翻译接口(PHP API)
- OV系列CMOS图像传感芯片的接口时序的FPGA实现
- 【JavaSE】Class.getResource(String name)和ClassLoader.getResource(String name)
- POS终端ECB算法详细解释之一
- 网络地址转换
- Hibernate一对一,一对多懒加载的要求
- 关于谷歌翻译接口调用php方法
- iOS推送小结(证书的生成、客户端的开发、服务端的开发)
- NAT原理与NAT穿越
- jQuery判断单选框,多选框是否选择简单案例
- debian安装 Mongodb
- vim函数跳转技巧
- 一位资深数据分析师的分享
- lucene一个TermFilter的简单实现 - 原理篇
- 在vi中如何显示当前正在编辑的文件名(包括路径