2013-10-14 213 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國際化有疑問 –