2013-03-16 17 views
11

Mam googleed to przez bardzo długi czas, ale bez rezultatów. Jestem początkujący w Django, więc nie znam wszystkich jego funkcji. Ale ten problem jest bardzo ważne dla klienta :-(mógłbyś mi pomóc, proszęDjango - wielokrotne plurowanie w modelu administratora

Tak, mam ten model zdefiniowany:

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

Teraz, ze względu na język czeski, muszę te napisane admin Lista:

  • 0 výrobků
  • 1 VÝROBEK
  • 2-4 výrobky
  • 5- výrobků

Wszędzie jeszcze używam ungettext z powodzeniem. Jednak nie wiem, jak się liczyć w Meta. Znalazłem to jako abstrakcyjne (ale wydaje się być bezużyteczny):

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} 

źródłowy jest z django internationalization: counter is not available when marking strings for pluralization

Może w końcu będzie dobrze pokazać Definition Language (próbował dodać/usunąć% sz 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ů" 

Jeśli potrzebujesz więcej informacji na pytanie, na pewno będę go zapewnić.

Dziękuję bardzo z góry.

UPDATE
Proszę mieć pewność, że używam następujących w pliku .po:

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

Raz więcej, nigdzie indziej ale administratora modele, to działa. To quetion nie jak uruchomić wielu pluralization w ogóle, ale jak nic zmieniać admin (np nowy abstrakcyjny model etc.), aby go uruchomić tam ...

Odpowiedz

1

Po wejściu w głąb źródeł Django, nie można tego zrobić w aplikacjach administratora bez przesłonięcia wielu funkcji.

5

trzeba umieścić w pliku .po:

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

Następnie w swoim szablonie używasz formy liczby mnogiej, przekazując prawidłowy licznik. Gettext mieć wszystkie informacje potrzebne:

  • ona wie, ile mnoga istnieją
  • on wie, jak calc mnogą dla wielu
  • Django przechodzi msg_id dla mnogiej i licznik
+0

Hej, napisałem, że wszędzie używam go z powodzeniem, tylko w modelach administratora nie działa. Zaktualizowałem post, aby mieć pewność, że wszyscy zobaczą, że mam ten tekst w pliku .po. – tomis

Powiązane problemy