我正在使用 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 文件没有相应的记录?