我正在使用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'欢迎使用我的网站'%}有记录:
msgid "Welcome to my site."
msgstr ""
但像{%trans error%}这样的变量内容没有记录。
我仍然继续,并重新加载我的博客。我看到'这个字段是必需的'。在评论表和联系我表格中翻译成中文,但“输入有效的电子邮件地址”仍为英文。我尝试手动添加新记录,例如
msgid "Enter a valid email address."
msgstr "XXXXXXX"
到.po文件,但没有效果。
为什么django会翻译一些错误消息并忽略其他错误消息?
如果django无法自动翻译某些字符串或者我只是不喜欢django自动提供给我的翻译,我可以提供自己的翻译吗?如果是这样,我在哪里放置翻译的字符串,因为.po文件没有相应的记录?
答案 0 :(得分:1)
我觉得你需要做的是自定义表单错误提示消息。 我给有一段示例代码,你感受下。
(我认为您只需要在Form
中定义自定义错误消息。
像这样:)
class UserForm(forms.Form):
username = forms.EmailField(required=True, error_messages={
'required':'your message here', 'invalid':'your message here'})