h/plugins/babel.py

47 lines
1.2 KiB
Python

import yaml
import urllib
import hook
languages = 'en ja de he es ko ru en zh en'.split();
language_pairs = zip(languages[:-1], languages[1:])
def babel_gen(inp):
req_url = 'http://ajax.googleapis.com/ajax/services/language/translate' \
'?v=1.0&q=%s&langpair=%s'
yield 'en', inp
for slang, tlang in language_pairs:
inp = inp.encode('utf8')
print slang, tlang, inp
json = urllib.urlopen(req_url % (urllib.quote(inp, safe=''),
slang + '%7C' + tlang)).read()
parsed = yaml.load(json)
if not 200 <= parsed['responseStatus'] < 300:
raise IOError, 'error with the translation server'
inp = parsed['responseData']['translatedText']
yield tlang, inp
@hook.command
def babel(inp):
try:
return list(babel_gen(inp))[-1][1]
except IOError:
return 'error with the translation server'
@hook.command
def babelexp(inp):
try:
babels = list(babel_gen(inp))
except IOError:
return 'error with the translation server'
out = u''
for lang, text in babels:
out += '%s:"%s", ' % (lang, text.decode('utf8'))
if len(out) > 300:
out = out[:150] + ' ... ' + out[-150:]
return out[:-2]