本来估计能找到类似Mete中verbose_name_plural属性去更改app显示名称的,可以只找到一个app_label。但是由于django源码中是这样写的:
app_dict[app_label] = {
'name': app_label.title(),
'app_url': app_label,
'has_module_perms': has_module_perms,
'models': [model_dict],
}
这里的app_label.title()不明白从哪来的title方法,但由于app_url的值也是根据app_label生成的。所以这样就会出现如下问题:
假如我的app名字叫books,原来生成的连接为/projectname/books/,而在Meta中设置app_label="书籍"以后,连接就变为/projectname/书籍/。
所以这种方法行不通,然而查看到admin模板中的index.html中的代码为:
<a href="{{ app.app_url }}" class="section">{% blocktrans with app.name as name %}{{ name }}{% endblocktrans %}</a>
所以可以考虑i18n去翻译app的名称,添加资源文件project/locale/zh_CN/LC_MESSAGES/django.po
尝试以后还是不行(注:我这里的django版本为1.0),这里我使用trans标签测试i18n是起作用的。估计是blocktrans有问题(有待查看)。
改为一下形式就可以了:
<a href="{{ app.app_url }}" class="section">{% trans app.name %}</a>
当然自己一个filter也可以的,测试玩玩。代码如下:
from django import template
from django.utils.translation import gettext as _
register = template.Library()
@register.filter
def transto(value):
return _(value)
修改上面的代码为:
<a href="{{ app.app_url }}" class="section">{{ app.name|transto }}</a>
现在一切ok了。
posted on 2008-12-12 22:22
周锐 阅读(3298)
评论(7) 编辑 收藏 所属分类:
Python