make google translation plugin work with unicode char

This commit is contained in:
Yann Leboulanger 2011-11-16 20:11:25 +01:00
parent 9ed4b62df2
commit 87504e3954
2 changed files with 8 additions and 17 deletions

View File

@ -1,7 +1,7 @@
[info] [info]
name: Google Translation name: Google Translation
short_name: google_translation short_name: google_translation
version: 0.1 version: 0.2
description: Translates (currently only incoming) messages using Google Translate. description: Translates (currently only incoming) messages using Google Translate.
authors = Mateusz Biliński <mateusz@bilinski.it> authors = Mateusz Biliński <mateusz@bilinski.it>
homepage = http://blog.bilinski.it homepage = http://blog.bilinski.it

View File

@ -26,12 +26,10 @@ Translates (currently only incoming) messages using Google Translate.
:license: GPL :license: GPL
''' '''
import re import json
import urllib2 import urllib2
import HTMLParser import HTMLParser
import new
import gtk import gtk
from pprint import pformat
from sys import getfilesystemencoding from sys import getfilesystemencoding
import chat_control import chat_control
@ -43,7 +41,6 @@ from common import gajim
from plugins import GajimPlugin from plugins import GajimPlugin
from plugins.helpers import log_calls, log from plugins.helpers import log_calls, log
from common import ged from common import ged
from common import nec
languages = { languages = {
_('Afrikaans'): 'af', _('Afrikaans'): 'af',
@ -127,9 +124,6 @@ class GoogleTranslationPlugin(GajimPlugin):
} }
self.controls = [] self.controls = []
self.translated_text_re = re.compile(
r'google.language.callbacks.id100\(\'22\', '
'{(?P<text>[^\}]*)}, 200, null, 200\)')
@log_calls('GoogleTranslationPlugin') @log_calls('GoogleTranslationPlugin')
def translate_text(self, account, text, from_lang, to_lang): def translate_text(self, account, text, from_lang, to_lang):
@ -137,8 +131,8 @@ class GoogleTranslationPlugin(GajimPlugin):
# Translate. # Translate.
quoted_text = urllib2.quote(text.encode(getfilesystemencoding())) quoted_text = urllib2.quote(text.encode(getfilesystemencoding()))
# prepare url # prepare url
translation_url = u'http://www.google.com/uds/Gtranslate?callback='\ translation_url = u'https://ajax.googleapis.com/ajax/services/' \
'google.language.callbacks.id100&context=22&q=%(quoted_text)s&'\ 'language/translate?q=%(quoted_text)s&' \
'langpair=%(from_lang)s%%7C%(to_lang)s&key=notsupplied&v=1.0' % \ 'langpair=%(from_lang)s%%7C%(to_lang)s&key=notsupplied&v=1.0' % \
locals() locals()
@ -146,17 +140,14 @@ class GoogleTranslationPlugin(GajimPlugin):
if not results: if not results:
return text return text
result = self.translated_text_re.search(results) result = json.loads(results)
if not result:
if result.get('responseStatus', '') != 200:
return text return text
dict_ = eval('{' + result.group('text') + '}') translated_text = result['responseData'].get('translatedText', '')
translated_text = dict_.get('translatedText', '')
if translated_text: if translated_text:
try: try:
translated_text = unicode(translated_text, 'unicode_escape')
htmlparser = HTMLParser.HTMLParser() htmlparser = HTMLParser.HTMLParser()
translated_text = htmlparser.unescape(translated_text) translated_text = htmlparser.unescape(translated_text)
except Exception: except Exception: