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
.
67 lines
2.5 KiB
Python
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;
|