2013-03-16 2 views
11

Ich habe dies für sehr lange Zeit googelt aber ohne Ergebnisse. Ich bin Anfänger in Django, also kenne ich nicht alle Funktionen. Aber dieses Problem ist sehr wichtig für Client :-(Sie mir helfen können, bitteDjango - multiple Pluralisierung in Admin-Modell

Also, ich habe dieses Modell definiert:

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') 
     ... 

Jetzt, da die tschechischen Sprache, ich brauche diese in Admin geschrieben Liste:

  • 0 výrobků
  • 1 výrobek
  • 2-4 výrobky
  • 5- výrobků

Überall sonst verwende ich ungettext erfolgreich. Ich weiß jedoch nicht, wie man in Meta zählt. Ich habe diese als abstrakte gefunden (aber scheint nutzlos zu sein):

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} 

Quelle ist von django internationalization: counter is not available when marking strings for pluralization

Vielleicht am Ende Sprache Definition wäre schön zu zeigen (versuchte hinzufügen/entfernen% s aus 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ů" 

Wenn Sie weitere Informationen zur Frage, ob ich es schaffen werde.

Vielen Dank im Voraus.

UPDATE
Stellen Sie bitte sicher, dass ich in der .po-Datei folgende bin mit:

"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" 

Noch einmal, anderswo aber Admin-Modelle, es funktioniert. Es ist quetion nicht, wie Multi Pluralisierung im Allgemeinen laufen, aber wie alles in admin (zB neue abstraktes Modell etc.) ändern, um es dort zu laufen ...

Antwort

1

den Plural calc Nachdem Sie sich intensiv mit Django-Quellen beschäftigt haben, ist es nicht möglich, dies in Admin-Anwendungsfällen zu tun, ohne viele Funktionen außer Kraft zu setzen.

5

Sie müssen in Ihren .po-Datei setzen:

"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" 

Dann verwenden Sie in Ihrer Vorlage den Plural mit einem gültigen Zähler. GetText alle erforderlichen Informationen, um haben:

  • Es weiß, wie viele Plurale gibt es
  • Es weiß, wie für eine Reihe
  • Django übergibt die msg_id für Plural und einen Zähler
+0

Hey, ich schrieb, dass überall sonst ich es erfolgreich benutze, nur in Admin-Modellen funktioniert es nicht. Ich habe den Beitrag aktualisiert, um sicher zu sein, dass jeder sehen wird, dass ich diesen Text in der .po-Datei habe. – tomis