mirror of
https://github.com/Hopiu/django-rosetta.git
synced 2026-05-25 04:33:46 +00:00
Extracted the "reflang" feature and applied it on its original commit.
I extracted the minimal feature set I could so that integration with newer upstream commits are easier.
This commit is contained in:
parent
5593635e1e
commit
3ebed99ac2
3 changed files with 41 additions and 1 deletions
|
|
@ -37,6 +37,13 @@
|
|||
<li {% ifequal rosetta_i18n_filter 'fuzzy' %}class="active"{% endifequal %}><a href="?filter=fuzzy">{% trans "Fuzzy only" %}</a></li>
|
||||
<li {% ifequal rosetta_i18n_filter 'all' %}class="active"{% endifequal %}><a href="?filter=all">{% trans "All" %}</a></li>
|
||||
</ul>
|
||||
|
||||
REF : <select onchange="javascript:window.location.href = this.value;">
|
||||
{% for langid, langname in LANGUAGES %}
|
||||
<option{% ifequal ref_lang langid %} selected="selected"{% endifequal %} value="{% url rosetta-reference-selection langid=langid %}">{{langname}}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
|
||||
<div id="changelist" class="module{% if rosetta_i18n_lang_bidi %} rtl{% endif %}">
|
||||
<div id="toolbar">
|
||||
<form id="changelist-search" action="" method="post">
|
||||
|
|
@ -97,7 +104,7 @@
|
|||
</td>
|
||||
{% else %}
|
||||
<td class="original">
|
||||
<span class="message">{{ message.msgid|format_message|linebreaksbr }}</span>
|
||||
<span class="message">{{ message.ref_txt|format_message|linebreaksbr }}</span>
|
||||
{% if message.msgctxt %}
|
||||
<span class="context">{% trans "Context hint" %}: "{{message.msgctxt|safe}}"</span>
|
||||
{% else %}
|
||||
|
|
|
|||
|
|
@ -5,4 +5,5 @@ urlpatterns = patterns('rosetta.views',
|
|||
url(r'^pick/$', 'list_languages', name='rosetta-pick-file'),
|
||||
url(r'^download/$', 'download_file', name='rosetta-download-file'),
|
||||
url(r'^select/(?P<langid>[\w\-]+)/(?P<idx>\d+)/$', 'lang_sel', name='rosetta-language-selection'),
|
||||
url(r'^select-ref/(?P<langid>[\w\-]+)/$', 'ref_sel', name='rosetta-reference-selection'),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -48,6 +48,14 @@ def home(request):
|
|||
version = rosetta.get_version(True)
|
||||
if 'rosetta_i18n_fn' in request.session:
|
||||
rosetta_i18n_fn = request.session.get('rosetta_i18n_fn')
|
||||
|
||||
ref_lang = request.session.get('rosetta_i18n_ref_lang_code', 'fr')
|
||||
ref_pofile = None
|
||||
if ref_lang != 'msgid':
|
||||
ref_fn = re.sub('/locale/[a-z]{2}/','/locale/%s/'%ref_lang, rosetta_i18n_fn)
|
||||
ref_pofile = pofile(ref_fn)
|
||||
|
||||
|
||||
rosetta_i18n_app = get_app_name(rosetta_i18n_fn)
|
||||
rosetta_i18n_lang_code = request.session['rosetta_i18n_lang_code']
|
||||
rosetta_i18n_lang_bidi = rosetta_i18n_lang_code.split('-')[0] in settings.LANGUAGES_BIDI
|
||||
|
|
@ -190,6 +198,14 @@ def home(request):
|
|||
else:
|
||||
paginator = Paginator([e for e in rosetta_i18n_pofile if not e.obsolete], rosetta_settings.MESSAGES_PER_PAGE)
|
||||
|
||||
for o in paginator.object_list:
|
||||
# default
|
||||
o.ref_txt = o.msgid
|
||||
if ref_pofile is not None:
|
||||
ref_entry = ref_pofile.find(o.msgid)
|
||||
if ref_entry is not None and ref_entry.msgstr:
|
||||
o.ref_txt = ref_entry.msgstr
|
||||
|
||||
if 'page' in request.GET and int(request.GET.get('page')) <= paginator.num_pages and int(request.GET.get('page')) > 0:
|
||||
page = int(request.GET.get('page'))
|
||||
else:
|
||||
|
|
@ -225,6 +241,9 @@ def home(request):
|
|||
del(request.session['rosetta_last_save_error'])
|
||||
rosetta_last_save_error = True
|
||||
|
||||
LANGUAGES = [ (langid, _(langname)) for langid,langname in settings.LANGUAGES]
|
||||
LANGUAGES.append( ('msgid', 'MSGID') )
|
||||
|
||||
return render_to_response('rosetta/pofile.html', locals(), context_instance=RequestContext(request))
|
||||
else:
|
||||
return list_languages(request)
|
||||
|
|
@ -343,6 +362,19 @@ def lang_sel(request, langid, idx):
|
|||
lang_sel = never_cache(lang_sel)
|
||||
lang_sel = user_passes_test(lambda user: can_translate(user), settings.LOGIN_URL)(lang_sel)
|
||||
|
||||
def ref_sel(request, langid):
|
||||
ALLOWED_LANGUAGES = [l[0] for l in settings.LANGUAGES]
|
||||
ALLOWED_LANGUAGES.append('msgid')
|
||||
|
||||
if langid not in ALLOWED_LANGUAGES:
|
||||
raise Http404
|
||||
|
||||
request.session['rosetta_i18n_ref_lang_code'] = langid
|
||||
|
||||
return HttpResponseRedirect(reverse('rosetta-home'))
|
||||
ref_sel = never_cache(ref_sel)
|
||||
ref_sel = user_passes_test(lambda user: can_translate(user), settings.LOGIN_URL)(ref_sel)
|
||||
|
||||
|
||||
def can_translate(user):
|
||||
if not getattr(settings, 'ROSETTA_REQUIRES_AUTH', True):
|
||||
|
|
|
|||
Loading…
Reference in a new issue