1

当对模型字段使用本地化的“选择”列表时,管理员不会在列表视图中显示翻译后的值。

简短的例子:

from django.utils.translation import ugettext_lazy as _

class OrderStates:
    STATES = (
        (STATE_NEW, _("New")),
        (STATE_CANCELLED, _("Cancelled")), )

class Order(models.Model):
    state = models.IntegerField(choices=OrderStates.STATES)
    # ..

class OrderAdmin(admin.ModelAdmin):
    list_display = [ 'id', 'state', 'address', 'user']
    # ..

admin.site.register(Order, OrderAdmin)

编辑订单时,“新”和“已取消”的本地化版本正确显示在前端和管理表单中。但是在管理员列表视图中,我得到空白字段- 无论我切换到哪种语言,包括英语。列名很好。

这只发生在 Python 2.3 中(谈论小众问题)。选择在 Python 2.5 的任何地方都能正确显示。我也没有收到任何错误或警告。

尝试使用 ugettext 而不是 ugettext_lazy 作为选项,但没有成功。ugettext_noop 之类的作品 - 它至少显示原始英文版本而不是空白字段。

我做错了什么还是这是一个错误?

4

2 回答 2

1

这可能是 Django 中某个地方的错误,没有正确调用项目上的 force_unicode。您粘贴的原始代码是正确的。你没有提到你正在使用的 Django 版本,所以我建议尝试最新的 1.0.3 或 1.1 版本,看看是否会修复它,否则检查票跟踪器以查看它是否已经被报告(注意如果它还没有被修复,它可能根本不会修复,因为 1.1 是支持 2.3 的最后一个版本)。

于 2009-07-29T19:15:43.687 回答
0

尝试使用:

import gettext as _

但是,如果您的某些翻译使用非 ascii 值,这可能会中断。实际上,这应该在一段时间前就已修复,请参阅 Ticket #5287

希望这可以帮助。

于 2009-07-29T14:13:40.020 回答