これらの選択肢を持つ ChoiceField が必要です。
choices = [(1, '1 thing'),
(2, '2 things'),
(3, '3 things'),
...]
そして翻訳してもらいたいです。
これは動作しません:
choices = [(i, ungettext_lazy('%s thing', '%s things', i) % i) for i in range(1,4)]
遅延オブジェクトが補間されるとすぐに、Unicode オブジェクトになるためです。ChoiceField.choices は起動時に評価されるため、その選択肢は Django の起動時にアクティブな言語になります。
を使用することもできますugettext_lazy('%s things' % i)
が、それでは数字ごとに翻訳が必要になり、ばかげています。これを行う正しい方法は何ですか?