命令行下翻译工具

命令行下翻译工具

接上文,继续show下我命令行下的工具--翻译脚本
(利用了google 翻译 json api: http://translate.google.cn/translate_a/t?client=t&text=%s&hl=zh-CN&sl=%s&tl=%s

特性:
1. 自动识别中翻英/英翻中
2. 翻译

涉及技术:
1. python
2. urllib
3. json
4. re

截图:


对应代码:
 1  '''
 2  Created on 2010-11-28
 3 
 4  @author: stone
 5  '''
 6  import  json
 7  import  re
 8  import  sys
 9  import  urllib2
10  import  types
11 
12  res  =   ' http://translate.google.cn/translate_a/t?client=t&text=%s&hl=zh-CN&sl=%s&tl=%s '
13  agent  =   ' Mozilla / 5.0 (X11; U; Linux i686; en - US) AppleWebKit / 534.7 (KHTML, like Gecko) Chrome / 7.0.517.44 Safari / 534.7 '
14 
15  def  get_data(text, sl = ' en ' , tl = ' zh-CN ' ):
16      req  =  urllib2.Request(res  %  (urllib2.quote(text), sl, tl))
17      req.add_header( ' user-agent ' , agent)
18      content  =  urllib2.urlopen(req).read()
19       return  json.loads(to_standard_json(content))
20 
21  def  show(data):
22       # step1
23       print  u ' 翻译:\n  %s '   %  (data[ 4 ][0][0])
24       # step2
25       if  types.ListType  ==  type(data[ 1 ]):
26           print  u ' \n字典: '
27           for  word  in  data[ 1 ]:
28               print  word[0]
29               if  len(word)  >   1 :
30                   for  i, w  in  enumerate(word[ 1 ]):
31                       print   '   %s.%s '   %  (i  +   1 , w) 
32 
33  def  to_standard_json(json):
34      p  =  re.compile(r ' ,([,\]]) ' )
35       while (p.search(json)):
36          json  =  p.sub( lambda  m: ' ,null%s '   %  (m.group( 1 )), json)
37       return  json
38 
39  def  contains_cn(text):
40       for  c  in  text:
41           if  ord(c)  >   127 :
42               return  True
43       return  False
44 
45  if   __name__   ==   ' __main__ ' :
46       if   not  len(sys.argv)  ==   2   or   not  sys.argv[ 1 ].strip():
47           print   ' Useage:translate.py word '
48          sys.exit()
49      word  =  sys.argv[ 1 ].strip()
50       if  contains_cn(word):
51          show(get_data(word,  ' zh-CN ' ' en ' ))
52       else :
53          show(get_data(word,  ' en ' ' zh-CN ' ))


你可能感兴趣的:(命令行下翻译工具)