2012-03-18 11 views
5

Provo ad utilizzare il plurale in russo, ma il russo ha due forme di parole per parole plurali (ad esempio: "1 курс" = 1 corso, "2 курс а" = 2 corsi, ma "5 курс ов" = 5 corsi).Uso del plurale per la localizzazione russa

Django supporta questa peculiarità e specifica forma plurale usando questo algoritmo (django.po header):

"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" 
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" 

Descrizione della forma plurale si presenta così (django.po):

msgid "%(курс) курс" 
msgid_plural "%(курс) курса" 
msgstr[0] "%(курс) курс" 
msgstr[1] "%(курс) курса" 
msgstr[2] "%(курс) курсов" 

Come lo uso nei modelli? Qualcosa di simile a questo {% sometag word="курс" counter=courses|lenht %}? c'è un tag di default, o devo implementare questo tag da solo?

+1

blocktrans dovrebbero aiutare a –

+0

@Tomasz Wysocki Che tu possa inviare un esempio? – Deadly

+0

"Plural-Forms: nplurals = 3; plurale = n% 10 == 1 && n% 100! = 11? 0: n% 10> = 2 && n%" "10 <= 4 && (n% 100 <10 || n%100> = 20)? 1: 2; \ n "Spero che n sia l'ultima cifra, non il numero stesso? Altrimenti non è corretto per n = 21, 31, 41 ecc. 22-24, 32-34, ecc. – drgs

risposta

5

È necessario utilizzare blocktrans come suggerito da Thomasz. Da blocktrans documentation:

Questo tag fornisce anche la pluralizzazione. Per usarlo:

Designare e associare un valore contatore con il conteggio dei nomi. Questo valore sarà quello utilizzato per selezionare la giusta forma plurale. Specificare sia le forme singolari e plurali che le separano con il tag {% plural%} all'interno dei tag {% blocktrans%} e {% endblocktrans%}.

Un esempio:

{% blocktrans count counter=list|length %} There is only one {{ name 
}} object. {% plural %} There are {{ counter }} {{ name }} objects. {% 
endblocktrans %} 

Un esempio più complesso:

{% blocktrans with amount=article.price count years=i.length %} That 
will cost $ {{ amount }} per year. {% plural %} That will cost $ {{ 
amount }} per {{ years }} years. {% endblocktrans %} 
+0

Grazie, ho letto prima i documenti. Ma non sta funzionando nel mio caso e davvero non so dove mi sbaglio. Provo ad usare: '{% blocktrans con name =" курс "contatore contatore = own_corses | length%} {{name}} {% plural%} {{name}} {% endblocktrans%}' in djnago.po: 'msgid "% (name) s курс" msgid_plural "% (name) s курсов" msgstr [0] "% (name) s курс" msgstr [1] "% (name) s курса" msgstr [2] " % (nome) s курсов "risultato:" 13 курс "- è sbagliato. – Deadly

+1

È necessario solo '{% blocktrans count counter = own_corses | length%} {{name}} {% plural%} {{name}} {% endblocktrans%}' –

Problemi correlati