之前寫過一篇文章講解如何修改django自帶后臺管理頁面里的app名稱的顯示,本來django原本就是對app的名稱進行國際化操作了,比如在模板中使用:
{% blocktrans with app.name as name %}{{ name }}{% endblocktrans %}
來顯示app的名字,但由于blocktrans 存在bug,所以不能翻譯app的名字,本人在前文中已經講解兩種解決辦法,要么使用:
{% trans app.name %}
要么就使用filter來處理。
今天由于空閑,就查看跟蹤了一下blocktrans 部分的源碼,發現根本就沒用對with后面的參數進行翻譯,打開PythonHome\Python25\Lib\site-packages\django\templatetags中的i18n.py到第85行代碼為:
data = dict([(v, force_unicode(context[v])) for v in vars])
解決法辦,把源碼修改為:
data = dict([(v, translation.ugettext(force_unicode(context[v]))) for v in vars])
這樣問題就解決了!
使用版本為1.0.2,不知道1.1里面有沒有解決。
posted on 2009-04-17 16:00
周銳 閱讀(1193)
評論(1) 編輯 收藏 所屬分類:
Python