2013-10-14 177 views
0

我正在用django制作中文博客。我写了一些我可以用中文控制的内容,例如发布文章,博客标题,博客导航,评论和联系人表单的标签标签。我无法控制的唯一情况是提交错误的表单,例如“此栏位必填。”,“输入有效的电子邮件地址”。因为我使用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文件中,字符串常量有记录,如{%反式“欢迎来到我的网站”%}有记载:

msgid "Welcome to my site." 
msgstr "" 

但像{%反式误差%}变量内容没有记录。

我还在继续,并重新加载我的博客。我看到'这个字段是必需的'。被翻译成中文,包括评论表格和联系我表格,但“输入有效的电子邮件地址”仍然是英文。我尝试手动添加新记录,如

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

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

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

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

回答

1

我觉得你需要做的是自定义表单错误提示消息。 我给有一段示例代码,你感受下。

(我想你只需要在Form定义自定义错误消息。 这样:)

class UserForm(forms.Form): 
    username = forms.EmailField(required=True, error_messages={ 
     'required':'your message here', 'invalid':'your message here'}) 
+0

感谢您的建议。现在按照你的方法,我的问题已经解决了。但我仍然对django国际化有疑问 –