0

コードのdjango刺し傷に複数形を追加するには、を使用する必要がありますungettext()。ここで、3番目のパラメーターは、単数形と複数形のどちらを使用するかを決定するカウンターです。

text = ungettext(
        'There is %(count)d %(name)s available.',
        'There are %(count)d %(name)s available.',
        count
) % {
    'count': count,
    'name': name
}

が呼び出されたときに、カウンタとしてのパラメータが使用可能である必要がありますungettext()。しかし、私の場合、弦とカウンターが分離されているため、適切な場所にカウンターを供給することは不可能です。

class foo(bar):
    description="There is %(count)d %(names)s available."

class foo_2(bar):
    description="%(count)d rabbits jump over the %(names)s."

# More 'foo' type classes....

class foo_model(Model):
    count=IntegerField()
    name=CharField()
    klass=CharField()
    #model definition...

    def _get_self_class(self):
        if self.klass=='foo':
            return foo
        elif self.klass=='foo_2':
            return foo_2

    def get_description(self):
            return self._get_self_class.description%(self.count,self.name)

私はこれを国際化する方法に少しこだわっています。誰か良い考えがありますか?

アップデート:

例を自分の状況に近いものに変更しました

4

1 に答える 1

0

ungettextたとえば、どこかに構築する必要があります

class Foo(Bar):
    description = "There is %(count)d %(names)s available."
    description_plural = "There are %(count)d %(names)s available."

class FooModel(Model):
    count = IntegerField()
    name = CharField()
    # model definition...

    def get_description(self):
        return ungettext(Foo.description, Foo.description_plural, self.count) % \
                   {'count':self.count, 'name':self.name}
于 2012-05-09T15:23:09.357 に答える