From 9fbf953216c7beb86f7b3232498c1ac052f43267 Mon Sep 17 00:00:00 2001 From: Kit Sunde Date: Fri, 24 Feb 2012 18:37:21 +0800 Subject: [PATCH 1/5] Show bing suggest errors. --- rosetta/templates/rosetta/js/rosetta.js | 68 +++++++++++-------------- 1 file changed, 29 insertions(+), 39 deletions(-) diff --git a/rosetta/templates/rosetta/js/rosetta.js b/rosetta/templates/rosetta/js/rosetta.js index 74b3162..f779063 100644 --- a/rosetta/templates/rosetta/js/rosetta.js +++ b/rosetta/templates/rosetta/js/rosetta.js @@ -4,53 +4,43 @@ google.setOnLoadCallback(function() { }, function() { $('.hide', $(this).parent()).hide(); }); + {% if ENABLE_TRANSLATION_SUGGESTIONS and BING_APP_ID %} - $('a.suggest').click(function() { - var a = $(this), - str = a.html(), - orig = $('.original .message', a.parents('tr')).html(), - trans=$('textarea',a.parent()), - sourceLang = '{{MESSAGES_SOURCE_LANGUAGE_CODE}}', - destLang = '{{rosetta_i18n_lang_code|slice:":2"}}', - app_id = '{{BING_APP_ID}}'; - - orig = unescape(orig).replace(//g,'\n').replace(//g,'').replace(/<\/code>/g,'').replace(/>/g,'>').replace(/</g,'<'); + $('a.suggest').click(function(e){ + e.preventDefault(); + var a = $(this); + var str = a.html(); + var orig = $('.original .message', a.parents('tr')).html(); + var trans=$('textarea',a.parent()); + var sourceLang = '{{ MESSAGES_SOURCE_LANGUAGE_CODE }}'; + var destLang = '{{ rosetta_i18n_lang_code|slice:":2" }}'; + var app_id = '{{ BING_APP_ID }}'; + var apiUrl = "http://api.microsofttranslator.com/V2/Ajax.svc/Translate"; + + orig = unescape(orig).replace(//g,'\n').replace(//,'').replace(/<\/code>/g,'').replace(/>/g,'>').replace(/</g,'<'); a.attr('class','suggesting').html('...'); window.onTranslationComplete = function(resp) { trans.val(unescape(resp).replace(/'/g,'\'').replace(/"/g,'"').replace(/%\s+(\([^\)]+\))\s*s/g,' %$1s ')); a.hide(); - }; - var s = document.createElement("script"); - s.src = "http://api.microsofttranslator.com/V2/Ajax.svc/Translate?oncomplete=onTranslationComplete&appId="+app_id +"&from=" + sourceLang + "&to=" + destLang + "&text=" + orig; - document.getElementsByTagName("head")[0].appendChild(s); - - /* - google.language.translate(orig, , function(result) { - if (!result.error) { - trans.val(unescape(result.translation).replace(/'/g,'\'').replace(/"/g,'"').replace(/%\s+(\([^\)]+\))\s*s/g,' %$1s ')); - a.hide(); - } else { - a.hide().before($(''+result.error.message+'')); - } - }); - */ - return false; + window.onTranslationError = function(response){ + a.text(response); + }; + var apiData = { + onerror: 'onTranslationError', + appid: app_id, + from: sourceLang, + to: destLang, + text: orig + }; + $.ajax({ + url: apiUrl, + data: apiData, + dataType: 'jsonp', + jsonpCallback: 'onTranslationComplete'}); }); - - - $('#translate-all').submit(function() { - $('a.suggest').click(); - return false; - }); - $('.checkall').click(function(){ - $('td.c input').attr('checked', ''); - $('td.c input').attr('value', '0'); - }); - - - {% endif %} + $('td.plural').each(function(i) { var td = $(this), trY = parseInt(td.closest('tr').offset().top); $('textarea', $(this).closest('tr')).each(function(j) { From b34d24915b39c72d4bd59ab0df6df0cf2a474932 Mon Sep 17 00:00:00 2001 From: Kit Sunde Date: Sat, 25 Feb 2012 05:21:45 +0800 Subject: [PATCH 2/5] Fixes the translation callback not being called and allow for suggestions on "zh-tw" and "zh-cn". --- rosetta/templates/rosetta/js/rosetta.js | 8 +++++--- rosetta/templatetags/rosetta.py | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/rosetta/templates/rosetta/js/rosetta.js b/rosetta/templates/rosetta/js/rosetta.js index f779063..4399177 100644 --- a/rosetta/templates/rosetta/js/rosetta.js +++ b/rosetta/templates/rosetta/js/rosetta.js @@ -1,3 +1,5 @@ +{% load rosetta %} + google.setOnLoadCallback(function() { $('.location a').show().toggle(function() { $('.hide', $(this).parent()).show(); @@ -13,7 +15,7 @@ google.setOnLoadCallback(function() { var orig = $('.original .message', a.parents('tr')).html(); var trans=$('textarea',a.parent()); var sourceLang = '{{ MESSAGES_SOURCE_LANGUAGE_CODE }}'; - var destLang = '{{ rosetta_i18n_lang_code|slice:":2" }}'; + var destLang = '{{ rosetta_i18n_lang_code }}'; var app_id = '{{ BING_APP_ID }}'; var apiUrl = "http://api.microsofttranslator.com/V2/Ajax.svc/Translate"; @@ -31,13 +33,13 @@ google.setOnLoadCallback(function() { appid: app_id, from: sourceLang, to: destLang, + oncomplete: "onTranslationComplete", text: orig }; $.ajax({ url: apiUrl, data: apiData, - dataType: 'jsonp', - jsonpCallback: 'onTranslationComplete'}); + dataType: 'jsonp'}); }); {% endif %} diff --git a/rosetta/templatetags/rosetta.py b/rosetta/templatetags/rosetta.py index 5a69936..bb28352 100644 --- a/rosetta/templatetags/rosetta.py +++ b/rosetta/templatetags/rosetta.py @@ -4,6 +4,7 @@ from django.utils.html import escape import re from django.template import Node from django.utils.encoding import smart_str, smart_unicode +from django.template.defaultfilters import stringfilter register = template.Library() rx = re.compile(r'(%(\([^\s\)]*\))?[sd])') @@ -27,7 +28,6 @@ def minus(a,b): except: return 0 minus=register.filter(minus) - def gt(a,b): try: From c18e891ca0ab889e778e70763cb291e23a369845 Mon Sep 17 00:00:00 2001 From: Marco Bonetti Date: Sun, 26 Feb 2012 23:25:04 +0100 Subject: [PATCH 3/5] Merged Kit Sunde's PR to better handle Bing API callbacks, and support for composite locales --- CHANGES | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index 7a12e09..ed5b417 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,5 @@ +* Better handling of translation callbacks on Bing's translation API and support of composite locales (Issue #26) + Version 0.6.5 ------------- * Updated polib to 0.7.0 From 7c3a8bb159e9f752a1e4c315e62446332f8f4979 Mon Sep 17 00:00:00 2001 From: Marco Bonetti Date: Wed, 14 Mar 2012 09:18:56 +0100 Subject: [PATCH 4/5] initial django 1.4 support. Fixes issue 30. --- rosetta/views.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rosetta/views.py b/rosetta/views.py index 8f1e885..530fa13 100644 --- a/rosetta/views.py +++ b/rosetta/views.py @@ -216,7 +216,10 @@ def home(request): page_range = pagination_range(1, paginator.num_pages, page) else: page_range = range(1, 1 + paginator.num_pages) - ADMIN_MEDIA_PREFIX = settings.ADMIN_MEDIA_PREFIX + try: + ADMIN_MEDIA_PREFIX = settings.ADMIN_MEDIA_PREFIX + except AttributeError: + ADMIN_MEDIA_PREFIX = settings.STATIC_ROOT + '/admin/' ENABLE_TRANSLATION_SUGGESTIONS = rosetta_settings.BING_APP_ID and rosetta_settings.ENABLE_TRANSLATION_SUGGESTIONS BING_APP_ID = rosetta_settings.BING_APP_ID MESSAGES_SOURCE_LANGUAGE_NAME = rosetta_settings.MESSAGES_SOURCE_LANGUAGE_NAME From 329e8c693bc90b667f6f09235eec728dffc62f87 Mon Sep 17 00:00:00 2001 From: Marco Bonetti Date: Tue, 27 Mar 2012 17:08:48 +0200 Subject: [PATCH 5/5] Version 0.6.6, Django 1.4 compatibility --- CHANGES | 3 +++ rosetta/__init__.py | 2 +- rosetta/poutil.py | 16 ++++++---------- rosetta/templates/rosetta/css/rosetta.css | 3 ++- rosetta/templates/rosetta/pofile.html | 4 ++-- rosetta/tests/__init__.py | 21 +++++++++++---------- rosetta/views.py | 10 ++++++++-- 7 files changed, 33 insertions(+), 26 deletions(-) diff --git a/CHANGES b/CHANGES index ed5b417..ddd0d82 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +Version 0.6.6 +------------- +* Django 1.4 support (Issue #30, #33) * Better handling of translation callbacks on Bing's translation API and support of composite locales (Issue #26) Version 0.6.5 diff --git a/rosetta/__init__.py b/rosetta/__init__.py index 1095f4c..12e3b11 100644 --- a/rosetta/__init__.py +++ b/rosetta/__init__.py @@ -1,4 +1,4 @@ -VERSION = (0, 6, 5) +VERSION = (0, 6, 6) def get_version(svn=False, limit=3): diff --git a/rosetta/poutil.py b/rosetta/poutil.py index 05637da..dc1483b 100644 --- a/rosetta/poutil.py +++ b/rosetta/poutil.py @@ -31,28 +31,24 @@ def find_pos(lang, project_apps=True, django_apps=False, third_party_apps=False) django_paths = cache.get('rosetta_django_paths') if django_paths is None: django_paths = [] - for root,dirnames,filename in os.walk(os.path.abspath(os.path.dirname(django.__file__))): + for root, dirnames, filename in os.walk(os.path.abspath(os.path.dirname(django.__file__))): if 'locale' in dirnames: - django_paths.append(os.path.join(root , 'locale')) + django_paths.append(os.path.join(root, 'locale')) continue - cache.set('rosetta_django_paths', django_paths, 60*60) + cache.set('rosetta_django_paths', django_paths, 60 * 60) paths = paths + django_paths - - - # settings + # settings for localepath in settings.LOCALE_PATHS: if os.path.isdir(localepath): paths.append(localepath) - + # project/app/locale for appname in settings.INSTALLED_APPS: - if rosetta_settings.EXCLUDED_APPLICATIONS and appname in rosetta_settings.EXCLUDED_APPLICATIONS: continue - p = appname.rfind('.') if p >= 0: - app = getattr(__import__(appname[:p], {}, {}, [appname[p+1:]]), appname[p+1:]) + app = getattr(__import__(appname[:p], {}, {}, [appname[p + 1:]]), appname[p + 1:]) else: app = __import__(appname, {}, {}, []) diff --git a/rosetta/templates/rosetta/css/rosetta.css b/rosetta/templates/rosetta/css/rosetta.css index 1fff0cf..763ac45 100644 --- a/rosetta/templates/rosetta/css/rosetta.css +++ b/rosetta/templates/rosetta/css/rosetta.css @@ -32,4 +32,5 @@ div.module {margin-bottom: 20px;} .checkall {cursor:pointer} #toolbar { height:20px} #toolbar #translate-all { float:right} -#toolbar form { float:left; } \ No newline at end of file +#toolbar form { float:left; } +#changelist table thead th { padding: 2px 5px; } \ No newline at end of file diff --git a/rosetta/templates/rosetta/pofile.html b/rosetta/templates/rosetta/pofile.html index 5d625ca..dde5eef 100644 --- a/rosetta/templates/rosetta/pofile.html +++ b/rosetta/templates/rosetta/pofile.html @@ -42,7 +42,7 @@