如何在Django管理后台中翻译函数名称?

11

在使用 http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display 中描述的 list_display 时,不仅可以显示字段,还可以显示自定义的可调用对象:

def colored_name(self):
    return '<span style="color: #%s;">%s %s</span>' % (self.color_code, self.first_name, self.last_name)
colored_name.allow_tags = True

然后像这样使用它:

list_display = ('first_name', 'last_name', 'colored_name')

由于 "first_name" 和 "last_name" 是普通字段,我们可以直接翻译它们:

first_name = models.CharField(_('first name'))
last_name = models.CharField(_('last name'))

问题是:

我该如何翻译我的函数名称?在哪里放置我的 _('彩色名称')?

2个回答

21

你所链接页面上的示例展示了callable可以有一个名为short_description的属性,这个属性被用作列标题的字符串。我没有验证过,但我强烈怀疑如果你将其设置为可翻译的字符串,那么它将能够工作。

def colored_name(self):
    return '<span style="color: #%s;">%s %s</span>' % (self.color_code, self.first_name, self.last_name)
colored_name.allow_tags = True
colored_name.short_description = _("Colored Name")

这个太明显了,但我不知怎么就完全忽略了。非常感谢 - 这样做起来非常好用。 - Semmel

-3

这是一个函数(可调用对象),因此正确的语法应该是:

list_display = ('first_name', 'last_name', colored_name)

1
这应该是一个注释,因为它没有回答问题。 - Andrew Wilkinson
1
我刚刚检查了一下 - 正确的语法是 'colored_name',即使它是可调用的。如果没有 '',它就无法工作。 - Semmel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接