django形成中文错误(或除Eng之外的任何语言?)

时间:2011-09-20 13:59:18

标签: django

我想知道表格错误是否可以用中文或其他语言显示?

这就是我收到错误的方法

{{ form.field_name.errors }}

3 个答案:

答案 0 :(得分:2)

如果您在视图中设置语言,错误消息将以所选语言打印:

    from django.utils.translation import activate
    activate('de')

答案 1 :(得分:2)

首先快速解释一下:

您的表单字段错误来自

raise forms.ValidationError(_("My Error Message"))

在Django中(也可能在其他地方),通常会看到:

from django.utils.translation import ugettext_lazy as _

这会将_变为ugettext_lazy,即上面的代码真的是:

raise forms.ValidationError(ugettext_lazy("My Error Message"))

但为了避免反复输入ugettext_lazy(或您的翻译功能),我们只需将其映射到_

回答您的问题

最后,回答您关于错误是否可以用中文(或其他语言)显示的问题。这取决于验证错误消息是否传递到django.utils.translation.ugettext。在上面的示例中,如果用户的LANGUAGE_CODE是zh-tw或zh-cn,则“我的错误消息”将以中文翻译显示。

下面是一个没有翻译的例子:

raise forms.ValidationError("My Error Message")

我强烈建议您阅读:https://docs.djangoproject.com/en/1.3/topics/i18n/internationalization/,因为您需要执行其他工作才能正确显示翻译。

答案 2 :(得分:0)

如果您在表单消息中使用_,则消息将显示在右侧lang中!但是如果你想检查模板中运行的lang,你可以使用:

{% if LANGUAGE_CODE != "ch" %}

{% endif %}

有关在表单中使用_的详情,请查看:https://docs.djangoproject.com/en/1.3/ref/forms/validation/#form-subclasses-and-modifying-field-errors