From 87504e39547d238c9f74e96564c258146359d114 Mon Sep 17 00:00:00 2001
From: Yann Leboulanger <asterix@lagaule.org>
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 5abbe3d9fb..2ad728b7d2 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 <mateusz@bilinski.it>
 homepage = http://blog.bilinski.it
diff --git a/plugins/google_translation/plugin.py b/plugins/google_translation/plugin.py
index dd1a155bad..1aa5ed111b 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<text>[^\}]*)}, 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:
-            return text
-
-        dict_ = eval('{' + result.group('text') + '}')
+        result = json.loads(results)
 
-        translated_text = dict_.get('translatedText', '')
+        if result.get('responseStatus', '') != 200:
+            return text
 
+        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:
-- 
GitLab