Администратор Django не показывает переведенные перечисления в виде списка в Python 2.3 - PullRequest
1 голос
/ 20 июля 2009

При использовании локализованного списка «вариантов» для поля модели администратор не показывает переведенные значения в виде списка.

Краткий пример:

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 вроде работает - он по крайней мере показывает оригинальные английские версии вместо пустых полей.

Я что-то не так делаю или это ошибка?

Ответы [ 2 ]

1 голос
/ 29 июля 2009

Это, вероятно, ошибка где-то в Django, неправильно вызывающая force_unicode для элемента. Вставленный вами исходный код верен. Вы не упоминаете, какую версию Django вы используете, поэтому я бы порекомендовал попробовать последнюю версию 1.0.3 или 1.1, чтобы увидеть, если это произойдет, чтобы исправить это, в противном случае проверьте систему отслеживания билетов, чтобы узнать, о ней уже сообщалось (примечание что если это еще не исправлено, то, вероятно, не будет вообще, поскольку 1.1 является последней версией, поддерживающей 2.3).

0 голосов
/ 29 июля 2009

попробуйте использовать:

import gettext as _

Однако, это может сломаться, если некоторые ваши переводы будут использовать не-ascii значения. На самом деле, это должно было быть исправлено некоторое время назад, см. Билет # 5287 .

Надеюсь, это поможет.

...