dr.botzo/modules/GoogleTranslate.py
Brian S. Stephan 3333fe125e Revert "fix the cheap unicode escapes in GoogleTranslate"
unicode-escape appears to do bad things to hiragana and probably
all unicode characters that are not unicode escaped. ultimately
it seems that google's responses are not consistent.

back to the drawing board.

This reverts commit 40888869b0.
2011-01-07 17:11:00 -06:00

67 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 GoogleTranslate(Module):
"""Class that translates text via Google Translate.
http://code.google.com/apis/ajaxlanguage/documentation/
"""
def do(self, connection, event, nick, userhost, replypath, what, admin_unlocked):
"""Query Google for weather info.
Leaves the input alone to let google make the best guess.
"""
whats = what.split(' ')
if whats[0] == 'translate' and len(whats) >= 4:
fromlang = whats[1]
tolang = whats[2]
text = ' '.join(whats[3:])
langpair = '%s|%s' % (fromlang, tolang)
gt_url = 'http://ajax.googleapis.com/ajax/services/language/translate'
params = urlencode( (('v', 1.0), ('q', text), ('langpair', langpair),) )
content = urlopen(gt_url, params).read()
start_idx = content.find('"translatedText":"')+18
translation = content[start_idx:]
end_idx = translation.find('"}, "')
translation = translation[:end_idx]
# 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;