0

我正在使用 django 制作一个中文博客。我用中文写所有我能控制的东西,比如帖子文本、博客标题、博客导航,以及评论和联系我表单的标签。我唯一无法控制的是表单提交错误,例如“此字段为必填项。”、“输入有效的电子邮件地址。”。因为我使用django评论框架和表单库来制作我的评论表单和联系我表单,我不知道如何将那个英文版替换为中文版。

所以我求助于django国际化。在 django 文档之后,我将一些翻译字符串添加到 django 提供给我的表单的原始 html 文件中,例如

{% for error in field.errors %}
    <li>{% trans error %}</li>
{% endfor %}

{% for error in form.sender.errors %}
    <li>{% trans error %}</li>
{% endfor %}

然后我在我的项目根目录中创建消息文件并将“django.middleware.locale.LocaleMiddleware”添加到 MIDDLEWARE_CLASSES 设置中。

在 .po 文件中,常量字符串有记录,例如 {% trans 'Welcome to my site' %} 有记录:

msgid "Welcome to my site."
msgstr ""

但是像 {% trans error %} 这样的变量内容没有记录。

我仍然继续,并重新加载我的博客。我看到“此字段为必填项”。在评论表单和联系我表单中都翻译成中文,但“输入有效的电子邮件地址”仍然是英文。我尝试手动添加新记录,例如

msgid "Enter a valid email address."
msgstr "XXXXXXX"

到 .po 文件,但没有效果。

为什么 django 会翻译一些错误信息而忽略其他错误信息?

如果 django 无法自动翻译某些字符串,或者我只是不喜欢 django 自动提供给我的翻译,我可以提供我自己的翻译吗?如果是这样,我应该把翻译后的字符串放在哪里,因为 .po 文件没有相应的记录?

4

1 回答 1

1

我觉得你需要做一个自定义的错误提示消息。我有一段示例代码,给你感受下。</p>

(我认为您只需要在 . 中定义自定义错误消息,Form如下所示:)

class UserForm(forms.Form):
    username = forms.EmailField(required=True, error_messages={
        'required':'your message here', 'invalid':'your message here'})
于 2013-10-14T01:57:47.360 回答