利用谷歌 Translate API制作自己的翻译脚本


Posted in PHP onJune 04, 2014

PHP代码:

#!/usr/bin/php -q
<?php
/** 
 * PHP Script For Google Translate
 * @author:Yishan Wang
 * @version:1.0.0
 */
class Google_API_translator
{
 public $url = "http://translate.google.com/translate_t";
 public $text = "";
 public $out = "";
 public $ip = '';
 function setText($text){
  $this->text = $text;
 }
 function translate($from='auto',$to='zh-CN'){
  $this->out = "";
  $gphtml = $this->postPage($this->url, $this->text,$from,$to);
  preg_match_all('/<span/s+title/="[^>]+>([^<]+)<//span>/i',$gphtml,$res);
  $this->out = $res[1][0];
  return $this->out;
 }
 /*
 $from  需要翻译的语言
 $to    翻译的语言
 */
 function postPage($url, $text,$from='auto',$to='zh-CN'){
  $html ='';
  if($url != "" && $text != "") {
   $ch = curl_init($url);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   if(!empty($this->ip) && is_string($this->ip)){
    curl_setopt($ch, CURLOPT_INTERFACE,$this->ip);
   }
   curl_setopt($ch, CURLOPT_HEADER, 1);
   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
   curl_setopt($ch, CURLOPT_TIMEOUT, 15);
   /*
   *hl - 界面语言,此处无用。
   *langpair - src lang to dest lang
   *ie - urlencode的编码方式?
   *text - 要翻译的文本
   */
   $fields = array('hl=zh-CN', 'langpair='.$from.'|'.$to, 'ie=UTF-8','text='.$text);
   $fields = implode('&', $fields);
   curl_setopt($ch, CURLOPT_POST, 1);
   curl_setopt($ch, CURLOPT_POSTFIELDS,$fields);
   $html = curl_exec($ch);
   if(curl_errno($ch)) $html = "";
   curl_close ($ch);
  }
  return $html;
 }
}
 $from = !empty($_REQUEST['fromlan'])?$_REQUEST['fromlan']:'en';
 $to = !empty($_REQUEST['tolan'])?$_REQUEST['tolan']:'zh-CN';
 $keywords  = "";
 for($i=1;$i<$argc;$i++){
  $keywords .= $argv[$i]." "; 
 }
 $article = !empty($_REQUEST['article'])?$_REQUEST['article']:$keywords;
 $g = new Google_API_translator();
 if(isset($_REQUEST['ip']) && !empty($_REQUEST['ip']))
 {
 $g -> ip = $_REQUEST['ip'];
 }
 $article = iconv('GBK','UTF-8',$article);
 $article = str_replace('{enter}',"/r/n",$article);
 $g->setText($article);
 $g->translate($from,$to);
 echo "-----------翻译结果--------------/n";
 echo iconv('GBK','UTF-8',$g->out);
 echo "/n";
?>

2、将以上内容保存名为“gtranslate”的文件中。

3、给gtranslate添加执行权限

    chmod a+x gtranslate

4、创建软连接

    ln -s /yourpath/gtranslate /usr/bin/gtranslate

5、输入测试词汇:

    gtranslate Hello World

    -----------翻译结果--------------
    世界您好

>>>

6、做了个中英文互译的版本。

用 gtranslate China ,英译汉

用 gtranslate -r 中国 ,汉译英

>>>

PHP 相关文章推荐
十天学会php之第八天
Oct 09 PHP
一步一步学习PHP(4) php 函数 补充2
Feb 15 PHP
php截取后台登陆密码的代码
May 05 PHP
深入Apache与Nginx的优缺点比较详解
Jun 17 PHP
php目录拷贝实现方法
Jul 10 PHP
php接口技术实例详解
Dec 07 PHP
php连接mysql数据库
Mar 21 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
Apr 07 PHP
PHP中常用的魔术方法
Apr 28 PHP
PHP将数据导出Excel表中的实例(投机型)
Jul 31 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
php设计模式之观察者模式定义与用法经典示例
Sep 19 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
Jun 04 #PHP
PHP 如何获取二维数组中某个key的集合
Jun 03 #PHP
PHP 二维数组根据某个字段排序的具体实现
Jun 03 #PHP
php 批量添加多行文本框textarea一行一个
Jun 03 #PHP
PHP解决URL中文GBK乱码问题的两种方法
Jun 03 #PHP
php数组中包含中文的排序方法
Jun 03 #PHP
php实现文件下载实例分享
Jun 02 #PHP
You might like
PHP无限分类(树形类)
2013/09/28 PHP
php实现的短网址算法分享
2014/06/20 PHP
PHP实现递归复制整个文件夹的类实例
2015/08/03 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
2015/12/24 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
thinkphp中U方法按路由规则生成url的方法
2018/03/12 PHP
javascript中的location用法简单介绍
2007/03/07 Javascript
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
2013/02/05 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
2013/04/17 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
jQuery实现元素拖拽并cookie保存顺序的方法
2016/02/20 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
2016/08/17 Javascript
如何实现json数据可视化详解
2016/11/24 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
对Python 除法负数取商的取整方式详解
2018/12/12 Python
python中字典按键或键值排序的实现代码
2019/08/27 Python
Python如何使用内置库matplotlib绘制折线图
2020/02/24 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
简历的自我评价
2014/02/03 职场文书
建筑公司员工自我鉴定
2014/04/08 职场文书
出纳试用期自我评价
2015/03/10 职场文书
2015年司法所工作总结
2015/04/27 职场文书
2016年“七一建党节”广播稿
2015/12/18 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
一篇文章看懂MySQL主从复制与读写分离
2021/11/07 MySQL