Naj­waż­niej­szą rze­czą, jaką powin­ni­ście wie­dzieć na temat fil­tra pluralize jest ta, żeby go nigdy nie uży­wać. Nigdy. Jego ist­nie­nie wynika z leni­stwa ludzi, któ­rzy nigdy w życiu nie przy­go­to­wy­wali apli­ka­cji do tłu­ma­cze­nia. Jeśli nie wyra­zi­łem się dość jasno, uży­wa­nie fil­tra pluralize wywoła u cie­bie raka, ste­reo­po­roże i zatwar­dze­nie rozsiane.

Jak­kol­wiek spryt­nie by nie wyglą­dał, ten kod nie nadaje się do niczego:

<p>
    There {{ item_count|pluralize:"is,are" }}
    {{ item_count }} thing{{ item_count|pluralize:"s" }}.
</p>

Dla­czego się nie nadaje? Spró­buj­cie go prze­tłu­ma­czyć na kilka języ­ków. Nie­któ­rzy chwy­tają się brzyd­kich obejść, inni wolą zro­bić to zgod­nie ze sztuką. Jeśli kie­dy­kol­wiek pra­co­wa­li­ście przy loka­li­za­cji opro­gra­mo­wa­nia, dosko­nale wie­cie, że tłu­ma­cze­nie jed­nego słowa jest tak samo sen­sowne, jak tłu­ma­cze­nie każ­dej litery z osobna.

Poprawna wer­sja jest przy oka­zji czytelna:

<p>
{% blocktrans count item_count as items %}
    There is {{ items }} thing.
{% plural %}
    There are {{ items }} things.
{% endblocktrans %}
</p>

{% blocktrans %} z {% plural %} uży­wają ungettext, dzięki czemu bez koniecz­no­ści odpra­wia­nia cza­rów radzą sobie z pol­skimi liczeb­ni­kami (jeden tysiąc, dwa tysiące, pięć tysięcy).