2009-07-20 9 views
1

モデルフィールドにローカライズされた "選択肢"のリストを使用すると、管理者は翻訳された値をリストビューに表示しません。Django管理者はPython 2.3のリストビューで翻訳された列挙を表示しません

ショート例:

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_lazyの代わりにugettextを使ってみましたが、これはうまくいきませんでした。 ugettext_noopの作品 - 少なくとも空白のフィールドの代わりにオリジナルの英語版を表示します。

私は何か間違っているのですか、これはバグですか?

答えて

1

これはおそらく、Djangoのどこかのバグであり、項目に対してforce_unicodeを正しく呼び出さない場合があります。貼り付けた元のコードは正しいです。 Djangoのバージョンについては言及していませんので、最新の1.0.3または1.1のリリースを試してみてください。そうでない場合は、チケットトラッカーが既に報告されているかどうか確認してくださいまだ修正されていない場合は、1.1が2.3をサポートする最後のバージョンであるため、おそらくそれはまったくありません)。

+0

最初に1.0.2で試してみました.1.1(ライブサーバーで試してみると、適切に)。 –

+0

完璧に動作する1.1 –

+0

サイドノートとして - 私はちょうどライブサーバー上で1.1アップグレードを行うために少しプッシュが必要だと思います。ちょうど少数のDjangoのサイトしかありませんが...まだ幸いにも何もこのプロセスで壊れませんでした。 –

0

は、使用してみてください:

import gettext as _ 

けれども、あなたの翻訳の一部は、非ASCII値を使用する場合は壊れるかもしれません。実際には、これはしばらく前に修正されていたはずです。チケット#5287を参照してください。

これが役に立ちます。

+0

いいえ、役に立たなかったのですが、お試しいただきありがとうございます!私は前にそのチケットを見つけられなかった。悲しいかな、これは古いフォームの管理者を指しています。これは少し前に完全に書き直されているようです... –

関連する問題