之前写过一篇文章讲解如何修改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
周锐 阅读(1188)
评论(1) 编辑 收藏 所属分类:
Python