From 87504e39547d238c9f74e96564c258146359d114 Mon Sep 17 00:00:00 2001 From: Yann Leboulanger Date: Wed, 16 Nov 2011 20:11:25 +0100 Subject: [PATCH] make google translation plugin work with unicode char --- plugins/google_translation/manifest.ini | 2 +- plugins/google_translation/plugin.py | 23 +++++++---------------- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/plugins/google_translation/manifest.ini b/plugins/google_translation/manifest.ini index 5abbe3d9f..2ad728b7d 100644 --- a/plugins/google_translation/manifest.ini +++ b/plugins/google_translation/manifest.ini @@ -1,7 +1,7 @@ [info] name: Google Translation short_name: google_translation -version: 0.1 +version: 0.2 description: Translates (currently only incoming) messages using Google Translate. authors = Mateusz BiliƄski homepage = http://blog.bilinski.it diff --git a/plugins/google_translation/plugin.py b/plugins/google_translation/plugin.py index dd1a155ba..1aa5ed111 100644 --- a/plugins/google_translation/plugin.py +++ b/plugins/google_translation/plugin.py @@ -26,12 +26,10 @@ Translates (currently only incoming) messages using Google Translate. :license: GPL ''' -import re +import json import urllib2 import HTMLParser -import new import gtk -from pprint import pformat from sys import getfilesystemencoding import chat_control @@ -43,7 +41,6 @@ from common import gajim from plugins import GajimPlugin from plugins.helpers import log_calls, log from common import ged -from common import nec languages = { _('Afrikaans'): 'af', @@ -127,9 +124,6 @@ class GoogleTranslationPlugin(GajimPlugin): } self.controls = [] - self.translated_text_re = re.compile( - r'google.language.callbacks.id100\(\'22\', ' - '{(?P[^\}]*)}, 200, null, 200\)') @log_calls('GoogleTranslationPlugin') def translate_text(self, account, text, from_lang, to_lang): @@ -137,8 +131,8 @@ class GoogleTranslationPlugin(GajimPlugin): # Translate. quoted_text = urllib2.quote(text.encode(getfilesystemencoding())) # prepare url - translation_url = u'http://www.google.com/uds/Gtranslate?callback='\ - 'google.language.callbacks.id100&context=22&q=%(quoted_text)s&'\ + translation_url = u'https://ajax.googleapis.com/ajax/services/' \ + 'language/translate?q=%(quoted_text)s&' \ 'langpair=%(from_lang)s%%7C%(to_lang)s&key=notsupplied&v=1.0' % \ locals() @@ -146,17 +140,14 @@ class GoogleTranslationPlugin(GajimPlugin): if not results: return text - result = self.translated_text_re.search(results) - if not result: + result = json.loads(results) + + if result.get('responseStatus', '') != 200: return text - dict_ = eval('{' + result.group('text') + '}') - - translated_text = dict_.get('translatedText', '') - + translated_text = result['responseData'].get('translatedText', '') if translated_text: try: - translated_text = unicode(translated_text, 'unicode_escape') htmlparser = HTMLParser.HTMLParser() translated_text = htmlparser.unescape(translated_text) except Exception: