make google translation plugin work with unicode char
This commit is contained in:
		
							parent
							
								
									9ed4b62df2
								
							
						
					
					
						commit
						87504e3954
					
				
					 2 changed files with 8 additions and 17 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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:
 | 
			
		||||
        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:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue