私はこれを非常に長い間グーグルで検索しましたが、結果はありませんでした。私は Django の初心者なので、Django のすべての機能を知りません。しかし、この問題はクライアントにとって非常に重要です:-(助けてくれませんか?
だから、私はこのモデルを定義しました:
from django.utils.translation import ugettext_lazy as _
class Product(Model):
#translation for model and set db table name
class Meta:
verbose_name = _('product')
verbose_name_plural = _('products')
...
さて、チェコ語のため、管理者リストにこれらを書く必要があります:
- 0 ヴィロブクー
- 1 ヴィーロベック
- 2-4 výrobky
- 5- výrobků
他のどこでも、私はungettext
正常に使用しています。ただし、メタでカウントを取得する方法がわかりません。私はこれを抽象的なものとして見つけました(しかし役に立たないようです):
class Model(DjangoModel):
class Meta:
abstract = True
def get_description(self):
return ungettext(self.verbose_name, self.verbose_name_plural, self.count) % \
{'count':self.count, 'name':self.name}
ソースはdjangoの国際化からのものです:複数形の文字列をマークするとき、カウンターは利用できません
たぶん、最後に言語定義を表示しても問題ないでしょう(から %s を追加/削除しようとしましたmsgid
):
msgid "%s product"
msgid_plural "%s products"
msgstr[0] "%s 1 výrobek"
msgstr[1] "%s 2 výrobky"
msgstr[2] "%s 5 výrobků"
質問のためにさらに情報が必要な場合は、必ず提供します。
よろしくお願いします。
更新
.po ファイルで次を使用していることを確認してください。
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n"
繰り返しますが、管理モデル以外のどこでも、IT は機能しています。複数の複数形化を一般的に実行する方法ではなく、管理者で何かを変更する方法(たとえば、新しい抽象モデルなど)で実行する方法は問題です...