一个弱爆的google 翻译客户端
2012年10月10日 02:06
在ubuntu下每次想翻译一个词或者一句话都要开浏览器上google翻译,感觉挺麻烦。于是自己写了一个python小脚本(googleTranslate.py),简化这个流程。
#!/usr/bin/python
# coding=utf-8
import urllib,urllib2
import sys
if __name__ == '__main__':
if len(sys.argv) < 2:
exit()
tolanguage = 'en'
text = ""
if sys.argv[1] == 'en':
tolanguage = 'en'
elif sys.argv[1] == 'ch':
tolanguage = 'zh-CN'
else:
text = sys.argv[1]
for i in range(2, len(sys.argv)):
text += sys.argv[i] + " "
values = {'client':'t', 'text': text, 'hl':'en', 'sl':'auto', 'tl':tolanguage, 'ie':'UTF-8', 'oe':'UTF-8', 'multires':'1', 'otf':'2', 'ssel':'0', 'tsel':'0', 'sc':'1'}
url = 'http://translate.google.cn/translate_a/t'
request = urllib2.Request(url, urllib.urlencode(values))
request.add_header('User-Agent', "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4")
response = urllib2.urlopen(request)
data = response.read()
#print data
frags = data[4:data.find("]]")].split("\"],[\"")
totext = ""
for frag in frags:
totext += frag.split("\",\"")[0]
print totext
将这个脚本放在某个目录下,此处以/path/to为例子。使用以下命令添加脚本可执行属性
chmod +x googleTranslate.py
然后在.bashrc最后添加一行
alias t='/path/to/googleTranslate.py'
于是乎在任何界面下想要翻译词句子,直接ctrl+alt+t,输入
t 想要翻译的词句
即可。默认是将词句翻译成英文,如果需要将其他语言翻译成中文,执行
t ch 想要翻译的词句
即可。方便快捷,o(∩∩)o...哈哈
而后觉得写成一个小软件还是很靠谱的,于是又折腾了下python Tkinter,把上面的代码加了一个GUI的外壳。废话少说,上图

GUI的代码也不复杂,顺便也贴了吧,供大家交流。BUG比较多,有待后期改进,谢谢阅读!
#!/usr/bin/python
# coding=utf-8
import urllib, urllib2
from Tkinter import *
from ttk import Combobox
def translate():
tolanguage = languageMap[option.get()]
text = startText.get('1.0', 'end').encode('utf-8')
values = {'client':'t', 'text': text, 'hl':'en', 'sl':'auto', 'tl':tolanguage, 'ie':'UTF-8', 'oe':'UTF-8', 'multires':'1', 'otf':'2', 'ssel':'0', 'tsel':'0', 'sc':'1'}
url = 'http://translate.google.cn/translate_a/t'
request = urllib2.Request(url, urllib.urlencode(values))
request.add_header('User-Agent', "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4")
response = urllib2.urlopen(request)
data = response.read()
print data
frags = data[4:data.find("]]")].split("\"],[\"")
totext = ""
for frag in frags:
totext += frag.split("\",\"")[0]
toText.delete('1.0', 'end')
toText.insert('1.0', totext.replace("\\n", "\n"))
if __name__ == "__main__":
mainWindow = Tk()
mainWindow.title(u"Google 翻译 by hustsxh@gmail.com")
#mainWindow.geometry('640x480+0+0')
frame = Frame(mainWindow)
frame.pack()
Label(frame, text = u'翻译成:').pack(side = LEFT)
languageMap = {'English': 'en', u'中文简体': 'zh-CN', u'中文繁體': 'zh-TW', u'日本語': 'ja', u'한국의': 'ko', u'Deutsch': 'de', u'русский': 'ru', u'française': 'fr'}
defaultLanguage = StringVar(frame, 'English')
option = Combobox(frame, text = defaultLanguage, values = languageMap.keys())
option.pack(side = LEFT)
transBotton = Button(frame, text =u"翻译", command = translate)
transBotton.pack(side = LEFT)
startText = Text(mainWindow, height = 15)
startText.pack(fill = BOTH, padx = 10, pady = 10)
toText = Text(mainWindow, height = 15)
toText.pack(fill = BOTH, padx = 10, pady = 10)
mainWindow.mainloop()