用于在同一模板上显示已翻译邮件的Django Translations无法翻译

时间:2014-07-18 11:42:39

标签: python django translation

除了单一情况外,我的django应用程序和翻译运行完美。

我有一个错误和一个成功的视图和模板,它将不同的消息呈现为相同的两个模板(一个用于成功消息,另一个用于失败和错误)

我的一般错误视图如下:

@login_required
@never_cache
def base_error_page(request, error="", title=""):
    context = {'error': error, 'title': title + " | "}
    return render_to_response('general_pages/operation_failed.html', context,
                          context_instance=RequestContext(request, {}))

我的错误模板general_pages/operation_failed.html

{% extends "base.html" %}
{% block title %}{{ title }}{% endblock title %}
{% block content %}
    {% autoescape off %}
    <h2>{{ title|slice:":-3" }}</h2>
    <table class="info_table">
        <tr>
            <th><img src="{{ MEDIA_URL }}img/failure.png"></th>
            <td style="font-weight: bold">{{ error }}</td>
        </tr>
    </table>
    {% endautoescape %}
{% endblock content %}

我只是将已翻译的字符串提供给我的页面视图,并在页面上显示该消息。 Usege如下

一些view.py

from django.utils.translation import ugettext as _
def someview(request):
    ...
    ...
    if some_error:
        return base_error_page(request, error=_('Update Failed <br />'
                                                '<a href="%(profile)s">Back to Profile Settings »»</a>') % {"profile": reverse('custom_profile')}, 
                                        title=_("Update Profile"))

但我的失败(和成功)页面消息未翻译成所选语言。所有其他翻译工作正常。

我正在使用Djnago 1.6.5

1 个答案:

答案 0 :(得分:0)

我会这样接近:

from django.utils.translation import ugettext as _
from django.shortcuts import render_to_response
from django.template import RequestContext

def someview(request):
    ...
    ...
    if some_error:
        return render_to_response('general_pages/operation_failed.html', {"error":_("update failed")},
                          context_instance=RequestContext(request))

然后让模板完成剩下的工作:

{% extends "base.html" %}
{% load i18n %}

{% block title %}{{ title }}{% endblock title %}
{% block content %}
    {% autoescape off %}
    <h2>{{ title|slice:":-3" }}</h2>
    <table class="info_table">
        <tr>
            <th><img src="{{ MEDIA_URL }}img/failure.png"></th>
            <td style="font-weight: bold">{{ error|title }}<br /><a href="{% url "custom_profile" %}">{% trans "back to profile settings"|title %} »»</a></td>
        </tr>
    </table>
    {% endautoescape %}
{% endblock content %}