diff options
Diffstat (limited to 'modules/translate.py')
-rwxr-xr-x | modules/translate.py | 206 |
1 files changed, 103 insertions, 103 deletions
diff --git a/modules/translate.py b/modules/translate.py index 11e4f28..dce080e 100755 --- a/modules/translate.py +++ b/modules/translate.py @@ -11,135 +11,135 @@ http://inamidst.com/phenny/ import re, urllib import web -def translate(text, input='auto', output='en'): - raw = False - if output.endswith('-raw'): - output = output[:-4] - raw = True +def translate(text, input='auto', output='en'): + raw = False + if output.endswith('-raw'): + output = output[:-4] + raw = True - import urllib2, json - opener = urllib2.build_opener() - opener.addheaders = [( - 'User-Agent', 'Mozilla/5.0' + - '(X11; U; Linux i686)' + - 'Gecko/20071127 Firefox/2.0.0.11' - )] + import urllib2, json + opener = urllib2.build_opener() + opener.addheaders = [( + 'User-Agent', 'Mozilla/5.0' + + '(X11; U; Linux i686)' + + 'Gecko/20071127 Firefox/2.0.0.11' + )] - input, output = urllib.quote(input), urllib.quote(output) - text = urllib.quote(text) + input, output = urllib.quote(input), urllib.quote(output) + text = urllib.quote(text) - result = opener.open('http://translate.google.com/translate_a/t?' + - ('client=t&hl=en&sl=%s&tl=%s&multires=1' % (input, output)) + - ('&otf=1&ssel=0&tsel=0&uptl=en&sc=1&text=%s' % text)).read() + result = opener.open('http://translate.google.com/translate_a/t?' + + ('client=t&hl=en&sl=%s&tl=%s&multires=1' % (input, output)) + + ('&otf=1&ssel=0&tsel=0&uptl=en&sc=1&text=%s' % text)).read() - while ',,' in result: - result = result.replace(',,', ',null,') - data = json.loads(result) + while ',,' in result: + result = result.replace(',,', ',null,') + data = json.loads(result) - if raw: - return str(data), 'en-raw' + if raw: + return str(data), 'en-raw' - try: language = data[2] # -2][0][0] - except: language = '?' + try: language = data[2] # -2][0][0] + except: language = '?' - return ''.join(x[0] for x in data[0]), language + return ''.join(x[0] for x in data[0]), language -def tr(phenny, context): - """Translates a phrase, with an optional language hint.""" - input, output, phrase = context.groups() +def tr(phenny, context): + """Translates a phrase, with an optional language hint.""" + input, output, phrase = context.groups() - phrase = phrase.encode('utf-8') + phrase = phrase.encode('utf-8') - if (len(phrase) > 350) and (not context.admin): - return phenny.reply('Phrase must be under 350 characters.') + if (len(phrase) > 350) and (not context.admin): + return phenny.reply('Phrase must be under 350 characters.') - input = input or 'auto' - input = input.encode('utf-8') - output = (output or 'en').encode('utf-8') + input = input or 'auto' + input = input.encode('utf-8') + output = (output or 'en').encode('utf-8') - if input != output: - msg, input = translate(phrase, input, output) - if isinstance(msg, str): - msg = msg.decode('utf-8') - if msg: - msg = web.decode(msg) # msg.replace(''', "'") - msg = '"%s" (%s to %s, translate.google.com)' % (msg, input, output) - else: msg = 'The %s to %s translation failed, sorry!' % (input, output) + if input != output: + msg, input = translate(phrase, input, output) + if isinstance(msg, str): + msg = msg.decode('utf-8') + if msg: + msg = web.decode(msg) # msg.replace(''', "'") + msg = '"%s" (%s to %s, translate.google.com)' % (msg, input, output) + else: msg = 'The %s to %s translation failed, sorry!' % (input, output) - phenny.reply(msg) - else: phenny.reply('Language guessing failed, so try suggesting one!') + phenny.reply(msg) + else: phenny.reply('Language guessing failed, so try suggesting one!') tr.rule = ('$nick', ur'(?:([a-z]{2}) +)?(?:([a-z]{2}|en-raw) +)?["“](.+?)["”]\? *$') tr.example = '$nickname: "mon chien"? or $nickname: fr "mon chien"?' tr.priority = 'low' -def tr2(phenny, input): - """Translates a phrase, with an optional language hint.""" - command = input.group(2) - if not command: - return phenny.reply("Need something to translate!") - command = command.encode('utf-8') - - def langcode(p): - return p.startswith(':') and (2 < len(p) < 10) and p[1:].isalpha() - - args = ['auto', 'en'] - - for i in xrange(2): - if not ' ' in command: break - prefix, cmd = command.split(' ', 1) - if langcode(prefix): - args[i] = prefix[1:] - command = cmd - phrase = command - - # if (len(phrase) > 350) and (not input.admin): - # return phenny.reply('Phrase must be under 350 characters.') - - src, dest = args - if src != dest: - msg, src = translate(phrase, src, dest) - if isinstance(msg, str): - msg = msg.decode('utf-8') - if msg: - msg = web.decode(msg) # msg.replace(''', "'") - if len(msg) > 450: msg = msg[:450] + '[...]' - msg = '"%s" (%s to %s, translate.google.com)' % (msg, src, dest) - else: msg = 'The %s to %s translation failed, sorry!' % (src, dest) - - phenny.reply(msg) - else: phenny.reply('Language guessing failed, so try suggesting one!') +def tr2(phenny, input): + """Translates a phrase, with an optional language hint.""" + command = input.group(2) + if not command: + return phenny.reply("Need something to translate!") + command = command.encode('utf-8') + + def langcode(p): + return p.startswith(':') and (2 < len(p) < 10) and p[1:].isalpha() + + args = ['auto', 'en'] + + for i in xrange(2): + if not ' ' in command: break + prefix, cmd = command.split(' ', 1) + if langcode(prefix): + args[i] = prefix[1:] + command = cmd + phrase = command + + # if (len(phrase) > 350) and (not input.admin): + # return phenny.reply('Phrase must be under 350 characters.') + + src, dest = args + if src != dest: + msg, src = translate(phrase, src, dest) + if isinstance(msg, str): + msg = msg.decode('utf-8') + if msg: + msg = web.decode(msg) # msg.replace(''', "'") + if len(msg) > 450: msg = msg[:450] + '[...]' + msg = '"%s" (%s to %s, translate.google.com)' % (msg, src, dest) + else: msg = 'The %s to %s translation failed, sorry!' % (src, dest) + + phenny.reply(msg) + else: phenny.reply('Language guessing failed, so try suggesting one!') tr2.commands = ['tr'] tr2.priority = 'low' -def mangle(phenny, input): - import time +def mangle(phenny, input): + import time - phrase = input.group(2).encode('utf-8') - for lang in ['fr', 'de', 'es', 'it', 'ja']: - backup = phrase[:] - phrase, _lang = translate(phrase, 'en', lang) - phrase = phrase.encode("utf-8") + phrase = input.group(2).encode('utf-8') + for lang in ['fr', 'de', 'es', 'it', 'ja']: + backup = phrase[:] + phrase, _lang = translate(phrase, 'en', lang) + phrase = phrase.encode("utf-8") - if not phrase: - phrase = backup[:] - break - time.sleep(0.25) + if not phrase: + phrase = backup[:] + break + time.sleep(0.25) - backup = phrase[:] - phrase, _lang = translate(phrase, lang, 'en') - phrase = phrase.encode("utf-8") + backup = phrase[:] + phrase, _lang = translate(phrase, lang, 'en') + phrase = phrase.encode("utf-8") - if not phrase: - phrase = backup[:] - break - time.sleep(0.25) + if not phrase: + phrase = backup[:] + break + time.sleep(0.25) - phrase = phrase.replace(' ,', ',').replace(' .', '.') - phrase = phrase.strip(' ,') - phenny.reply(phrase or 'ERRORS SRY') + phrase = phrase.replace(' ,', ',').replace(' .', '.') + phrase = phrase.strip(' ,') + phenny.reply(phrase or 'ERRORS SRY') mangle.commands = ['mangle'] -if __name__ == '__main__': - print __doc__.strip() +if __name__ == '__main__': + print __doc__.strip() |