一个简单的Google Translate命令行

软件和网站开发以及相关技术探讨
回复
头像
anticlockwise
帖子: 2394
注册时间: 2007-03-01 20:46
来自: 湖南长沙

一个简单的Google Translate命令行

#1

帖子 anticlockwise » 2009-01-20 23:53

自己写了一个非常简单的Python脚本用来调用Google Translate

代码: 全选

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# filename: /usr/bin/tt
# author: Rongzhou Shen

import urllib
import urllib2
import sys
import jsonlib
from optparse import OptionParser

URL = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s%%7C%s"

parser = OptionParser()
parser.add_option("-f", "--from", dest="lang1",
        help="The language code to translate from", default="en")
parser.add_option("-t", "--to", dest="lang2",
        help="The language code to translate to", default="zh")

(options, args) = parser.parse_args()
if len(args) < 1:
    print "Usage: python translate.py <translate text>"
    sys.exit(0)

text = ' '.join(args)
print "Translating %s from %s to %s" % (text, options.lang1, options.lang2)
query = (URL % (urllib.quote(text), options.lang1, options.lang2))
req = urllib2.Request(query)
req.add_header("Referer", "http://www.my-ajax-site.com")
r = urllib2.urlopen(req)

data = r.read()
obj = jsonlib.read(data)
if obj['responseStatus'] != 200L:
    print "Error: %s" % obj['responseDetails']
else:
    print "Translated text: %s" % obj['responseData']['translatedText']
例子:

代码: 全选

$ tt Hello World
Translating Hello World from en to zh
Translated text: 世界您好
$ tt -t fr Hello World
Translating Hello World from en to fr
Translated text: Bonjour tout le monde
头像
numbchild
帖子: 107
注册时间: 2010-03-16 12:34

Re: 一个简单的Google Translate命令行

#2

帖子 numbchild » 2010-12-19 21:51

[chris][21:50:24]$ ./google_translate.py
Traceback (most recent call last):
File "./google_translate.py", line 11, in <module>
import jsonlib
ImportError: No module named jsonlib
[chris][21:50:28]$
头像
ChenFengyuan
帖子: 770
注册时间: 2008-03-23 0:39

Re: 一个简单的Google Translate命令行

#3

帖子 ChenFengyuan » 2010-12-19 22:01

弯弯 :em11
头像
lgxwqq
帖子: 1145
注册时间: 2009-12-04 13:29

Re: 一个简单的Google Translate命令行

#4

帖子 lgxwqq » 2011-03-12 12:54

要不我给lz开发个gui吧,顺便学习下 :em11
关注和奉献Tianjin Linux User Group的建设,热心参与开源社区,Linux爱好者,python初学者,希望成为一名geek,求交流求指导

我知道发QQ群是不对的。。。可是:Linux天津qq群104029520 73809331,终有一天会没有QQ的。。

Blog:http://www.freetstar.com //欢迎
twitter:https://twitter.com/freetstar
头像
hcym
帖子: 15634
注册时间: 2007-05-06 2:46

Re: 一个简单的Google Translate命令行

#5

帖子 hcym » 2011-03-12 13:11

44

谢谢
وإذا كان هذا لا يحصل أكثر من 100 ملاحظات ، انا ذاهب الى غضب
头像
lgxwqq
帖子: 1145
注册时间: 2009-12-04 13:29

Re: 一个简单的Google Translate命令行

#6

帖子 lgxwqq » 2011-03-12 14:15

安装jsonlib也跑不通阿,
求lz指点
gt:lgxwqq@gmail.com
关注和奉献Tianjin Linux User Group的建设,热心参与开源社区,Linux爱好者,python初学者,希望成为一名geek,求交流求指导

我知道发QQ群是不对的。。。可是:Linux天津qq群104029520 73809331,终有一天会没有QQ的。。

Blog:http://www.freetstar.com //欢迎
twitter:https://twitter.com/freetstar
头像
realfiona
帖子: 137
注册时间: 2007-11-20 10:58
来自: Hangzhou, China
联系:

Re: 一个简单的Google Translate命令行

#7

帖子 realfiona » 2011-03-12 14:28

numbchild 写了:[chris][21:50:24]$ ./google_translate.py
Traceback (most recent call last):
File "./google_translate.py", line 11, in <module>
import jsonlib
ImportError: No module named jsonlib
[chris][21:50:28]$
使用json模块

代码: 全选


#!/usr/bin/env python
# -*- coding: utf-8 -*-

# filename: /usr/bin/tt
# author: Rongzhou Shen

import urllib
import urllib2
import sys
#import jsonlib
import json
from optparse import OptionParser

URL = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s%%7C%s"

parser = OptionParser()
parser.add_option("-f", "--from", dest="lang1",
        help="The language code to translate from", default="en")
parser.add_option("-t", "--to", dest="lang2",
        help="The language code to translate to", default="zh")

(options, args) = parser.parse_args()
if len(args) < 1:
    print "Usage: python translate.py <translate text>"
    sys.exit(0)

text = ' '.join(args)
print "Translating %s from %s to %s" % (text, options.lang1, options.lang2)
query = (URL % (urllib.quote(text), options.lang1, options.lang2))
req = urllib2.Request(query)
req.add_header("Referer", "http://www.my-ajax-site.com")
r = urllib2.urlopen(req)

data = r.read()
obj = json.loads(data)
if obj['responseStatus'] != 200L:
    print "Error: %s" % obj['responseDetails']
else:
    print "Translated text: %s" % obj['responseData']['translatedText']
flay
帖子: 211
注册时间: 2010-01-25 9:27

Re: 一个简单的Google Translate命令行

#8

帖子 flay » 2011-03-12 16:32

不错,好东西,收下了。
头像
lgxwqq
帖子: 1145
注册时间: 2009-12-04 13:29

Re: 一个简单的Google Translate命令行

#9

帖子 lgxwqq » 2011-03-12 19:11

看明白了,原来是用的google的API :em11
关注和奉献Tianjin Linux User Group的建设,热心参与开源社区,Linux爱好者,python初学者,希望成为一名geek,求交流求指导

我知道发QQ群是不对的。。。可是:Linux天津qq群104029520 73809331,终有一天会没有QQ的。。

Blog:http://www.freetstar.com //欢迎
twitter:https://twitter.com/freetstar
qq8593001qq
帖子: 135
注册时间: 2008-01-09 12:56

Re: 一个简单的Google Translate命令行

#10

帖子 qq8593001qq » 2013-04-06 15:49

Translating hello from en to zh
Error: Please use Translate v2. See http://code.google.com/apis/language/tr ... rview.html

网站暂时打不开
Python 2.7.3
October21
帖子: 42
注册时间: 2012-10-29 19:56
系统: Ubuntu 12.04 LTS

Re: 一个简单的Google Translate命令行

#11

帖子 October21 » 2013-04-06 17:24

qq8593001qq 写了:Translating hello from en to zh
Error: Please use Translate v2. See http://code.google.com/apis/language/tr ... rview.html

网站暂时打不开
Python 2.7.3
谷歌api换了,都两三年了 :em20
qq8593001qq 你还试干嘛?
回复