From 9cb28dddc8e86900a41a5af37db1d4b0c0883ca9 Mon Sep 17 00:00:00 2001 From: cuchac Date: Wed, 10 Dec 2014 01:07:56 +0100 Subject: [PATCH] Add support for Google translate --- rosetta/conf/settings.py | 3 +++ rosetta/templates/rosetta/js/rosetta.js | 10 ++++++---- rosetta/views.py | 13 +++++++++---- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/rosetta/conf/settings.py b/rosetta/conf/settings.py index 27fc868..4c215d1 100644 --- a/rosetta/conf/settings.py +++ b/rosetta/conf/settings.py @@ -15,6 +15,9 @@ YANDEX_TRANSLATE_KEY = getattr(settings, 'YANDEX_TRANSLATE_KEY', None) AZURE_CLIENT_ID = getattr(settings, 'AZURE_CLIENT_ID', None) AZURE_CLIENT_SECRET = getattr(settings, 'AZURE_CLIENT_SECRET', None) +# Use Google translator +GOOGLE_TRANSLATE = getattr(settings, 'ROSETTA_GOOGLE_TRANSLATE', None) + # Displays this language beside the original MSGID in the admin MAIN_LANGUAGE = getattr(settings, 'ROSETTA_MAIN_LANGUAGE', None) diff --git a/rosetta/templates/rosetta/js/rosetta.js b/rosetta/templates/rosetta/js/rosetta.js index 13b5ce2..ebc8546 100644 --- a/rosetta/templates/rosetta/js/rosetta.js +++ b/rosetta/templates/rosetta/js/rosetta.js @@ -7,7 +7,8 @@ google.setOnLoadCallback(function() { $('.hide', $(this).parent()).hide(); }); -{% if rosetta_settings.ENABLE_TRANSLATION_SUGGESTIONS and rosetta_settings.AZURE_CLIENT_ID and rosetta_settings.AZURE_CLIENT_SECRET %} +{% if rosetta_settings.ENABLE_TRANSLATION_SUGGESTIONS %} + {% if rosetta_settings.AZURE_CLIENT_ID and rosetta_settings.AZURE_CLIENT_SECRET or rosetta_settings.GOOGLE_TRANSLATE %} $('a.suggest').click(function(e){ e.preventDefault(); var a = $(this); @@ -20,7 +21,7 @@ google.setOnLoadCallback(function() { orig = unescape(orig).replace(//g,'\n').replace(//,'').replace(/<\/code>/g,'').replace(/>/g,'>').replace(/</g,'<'); a.attr('class','suggesting').html('...'); - $.getJSON("/rosetta/translate/", { + $.getJSON("./translate/", { from: sourceLang, to: destLang, text: orig @@ -35,9 +36,9 @@ google.setOnLoadCallback(function() { } ); }); -{% endif %} + {% endif %} -{% if rosetta_settings.ENABLE_TRANSLATION_SUGGESTIONS and rosetta_settings.YANDEX_TRANSLATE_KEY %} + {% if rosetta_settings.YANDEX_TRANSLATE_KEY %} $('a.suggest').click(function(e){ e.preventDefault(); var a = $(this); @@ -74,6 +75,7 @@ google.setOnLoadCallback(function() { } }); }); + {% endif %} {% endif %} $('td.plural').each(function(i) { diff --git a/rosetta/views.py b/rosetta/views.py index d6c9b0a..8f18227 100644 --- a/rosetta/views.py +++ b/rosetta/views.py @@ -417,13 +417,18 @@ def translate_text(request): data = {'success': True, 'translation': text} else: # run the translation: - AZURE_CLIENT_ID = getattr(settings, 'AZURE_CLIENT_ID', None) - AZURE_CLIENT_SECRET = getattr(settings, 'AZURE_CLIENT_SECRET', None) - translator = Translator(AZURE_CLIENT_ID, AZURE_CLIENT_SECRET) + if getattr(rosetta_settings, 'GOOGLE_TRANSLATE', False): + import goslate + translator = goslate.Goslate() + else: + AZURE_CLIENT_ID = getattr(settings, 'AZURE_CLIENT_ID', None) + AZURE_CLIENT_SECRET = getattr(settings, 'AZURE_CLIENT_SECRET', None) + + translator = Translator(AZURE_CLIENT_ID, AZURE_CLIENT_SECRET) try: - translated_text = translator.translate(text, language_to) + translated_text = translator.translate(text, language_to, language_from) data = {'success': True, 'translation': translated_text} except TranslateApiException as e: data = {'success': False, 'error': "Translation API Exception: {0}".format(e.message)}