dr.botzo/modules/GoogleTranslate.py
Brian S. Stephan 9720dfe5bc Revert "Generalize translation code in GoogleTranslate.py". Previous
three reverts to undo the recent stuff from kad's branch, which was
having problems with recursion

This reverts commit 1920a127599721dd927da984f6d2b157ef1dcbab.

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2010-08-01 19:31:09 -05:00

64 lines
2.5 KiB
Python

# GoogleTranslate - go out to google and translate sentences
# Copyright (C) 2010 Brian S. Stephan
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from urllib2 import urlopen
from urllib import urlencode
from extlib import irclib
from Module import Module
# Class that translates text via Google Translate.
#
# http://code.google.com/apis/ajaxlanguage/documentation/
class GoogleTranslate(Module):
def do(self, connection, event, nick, userhost, replypath, what, admin_unlocked):
whats = what.split(' ')
if whats[0] == 'translate' and len(whats) >= 4:
fromlang = whats[1]
tolang = whats[2]
text = ' '.join(whats[3:])
text = text.encode('utf-8')
langpair = '%s|%s' % (fromlang, tolang)
gt_url = 'http://ajax.googleapis.com/ajax/services/language/translate?'
params = urlencode( (('v', 1.0), ('q', text), ('langpair', langpair),) )
url = gt_url + params
content = urlopen(url).read()
start_idx = content.find('"translatedText":"')+18
translation = content[start_idx:]
end_idx = translation.find('"}, "')
translation = translation[:end_idx]
# decode the string, since it may include unicode. it will be encoded later.
translation = translation.decode('utf-8')
# do some text conversion
translation = translation.replace('\\u0026quot;', '"')
translation = translation.replace('\\u0026amp;', '&')
translation = translation.replace('\\u003c', '<')
translation = translation.replace('\\u0026lt;', '<')
translation = translation.replace('\\u003e', '>')
translation = translation.replace('\\u0026gt;', '>')
translation = translation.replace('\\u0026#39;', '\'')
return self.reply(connection, replypath, translation)
# vi:tabstop=4:expandtab:autoindent
# kate: indent-mode python;indent-width 4;replace-tabs on;