PHP使用google translate API
时间:2009-02-15
来源:互联网
Html代码

[php]http://translate.google.com/translate_a/t?client=t&text=computer&sl=en&tl=zh_CN[/php]
其中client没有更改,text表示着要翻译的文本,sl貌似是文本的源语言,tl表示着翻译目标语言。根据google的结果,大致有了个模型
- class Google_API_translator {
-
-
public $out = ""; -
- function translate() {
- $this->out = "";
- $text = urlencode("computer");//要翻译的单词
-
- $google_translator_url = "http://translate.google.com/translate_a/t?client=t&text=".$text."&sl=en&tl=zh_CN";
-
//拼凑google翻译的api url
- $gphtml = $this->postPage(array("url" => $google_translator_url));
-
- $this->out = $gphtml;
-
return $this->out; - }
- function postPage($opts) {
- $html = "";
-
if($opts["url"] != "") { - $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $opts["url"]);
-
- $html = curl_exec($ch);
-
-
-
if(curl_errno($ch)) $html = ""; - curl_close ($ch);
- }
-
return $html; - }
- }
-
- $g = new Google_API_translator();
-
- $g->translate();
很完美,返回的结果中没有任何编码问题。从google返回的中文编码完全正确。
接下来,能不能反向翻译,从中文到英文哪?
- class Google_API_translator {
-
-
public $out = ""; -
- function translate() {
- $this->out = "";
- $text = urlencode("计算机");//要翻译的单词
-
- $google_translator_url = "http://translate.google.com/translate_a/t?client=t&text=".$text."&sl=zh_CN&tl=en";
-
- echo $google_translator_url;
- $gphtml = $this->postPage(array("url" => $google_translator_url));
-
- $this->out = $gphtml;
-
return $this->out; - }
- function postPage($opts) {
- $html = "";
-
if($opts["url"] != "") { - $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $opts["url"]);
-
- $html = curl_exec($ch);
-
-
-
if(curl_errno($ch)) $html = ""; - curl_close ($ch);
- }
-
return $html; - }
- }
-
- $g = new Google_API_translator();
-
- $g->translate();
问题出现了,返回的是一个乱码。诡异的是,这次接受的是google发送过来的英文单词,怎么会有编码错误?
是php的curl无法发送unicode编码或者google在接受的过程中出现了问题吗?
[php]echo $google_translator_url;[/php] 得到的url是
[php]http://translate.google.com/translate_a/t?client=t&text=%E8%AE%A1%E7%AE%97%E6%9C%BA&sl=zh_CN&tl=en[/php] 直接把这个url输入浏览器的地址栏,没有任何问题(IE,Firefox均能通过)。
假设途中unicode的传送出现了解析方面的问题,在api的url上更改了一下,把"&sl=zh_CN&tl=en"更改为完全错误的参数
[php]http://translate.google.com/translate_a/t?client=t&text=%E8%AE%A1%E7%AE%97%E6%9C%BA&sl=en&tl=en[/php]
奇怪了这次php页面倒是能够接受到google发回来的中文字符串,但是死活就是无法显示使用正确的编码参数google发送过来结果。
我认为,疑点是是否存在在:
1. 因为google接受的是中文编码,所以发送过的也是按照某种中文编码的字符?FF或者IE足够聪明把这个字符串转换了一下,但是php的curl就没有这么聪明了。
[ 本帖最后由 alexleeyy 于 2009-2-15 16:39 编辑 ]
作者: alexleeyy 发布时间: 2009-02-15
作者: abcnic 发布时间: 2009-02-16
作者: cnkiller 发布时间: 2009-02-16
作者: zc1972 发布时间: 2009-02-16
作者: alonegrass 发布时间: 2009-02-18
作者: hopol 发布时间: 2009-02-20
在使用google translate的时候,遇到一个问题,就是网站翻译后,便丢失了session和cookie,使得翻译前后两者脱节,不能很好衔接,不知道有没有办法解决呢?
作者: qiaogqiang 发布时间: 2010-09-23
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28