代码之家  ›  专栏  ›  技术社区  ›  Tomas Andrle

Django管理员在Python 2.3下的列表视图中不显示翻译后的枚举

  •  1
  • Tomas Andrle  · 技术社区  · 17 年前

    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)
    

    编辑订单时,“新建”和“已取消”的本地化版本会正确显示在前端和管理表单中。但是 在管理员列表视图中,我看到空白字段

    尝试使用ugettext而不是ugettext_lazy作为选项,但不起作用。ugettext_noop有点奏效——它至少显示了原始的英文版本,而不是空白字段。

    2 回复  |  直到 17 年前
        1
  •  1
  •   Alex Gaynor    17 年前

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

        2
  •  0
  •   Haes    17 年前

    import gettext as _
    

    #5287 .

    希望这能有所帮助。