V Djangu používám pro překlady běžně
django.utils.translation.gettext
generuji slovník pomocí skriptu makemessages a přeložím konstrukci:
msgid "human"
msgstr "člověk"
zkompiluji skriptem compilemessages
a v template volám přes
{% load i18n %}
{% trans "human" %}
...dosud je vše pořádku :)
Časem se potřebuji toto slovo také skloňovat do množných čísel podle počtu do třech tvarů, např. 1 "člověk", 2 "lidé", 5 "lidí"
Nabízí se mi pluralizace.
Pokud tedy v Djangu nově využiji
django.utils.translation.pgettext
vygeneruji slovník pomocí skriptu makemessages
tak dostanu k přeložení konstrukci
msgid "human"
msgstr[0] "člověk"
msgstr[1] "lidé"
msgstr[2] "lidí"
Tato konstrukce s jedním msgid je generována společně pro všechna volání human přes gettext (resp. lang v template) i přes pgettext.
Na tom nevidím nic špatného a líbí se mi to.
Pokud ale nyní v template použiji jednoduchý překlad z gettext
{% load i18n %}
{% trans "human" %}
Tak překlad neproběhne :(
Předpokládal bych, že se pro gettext použije tvar msgstr[0], ale nepřeloží se nic.
Otázka: Opravdu musím všechny překlady tohoto slova VŠUDE dohledat a přepsat do pluralizované podoby? tedy z hezkého
Na ukecané
{% blocktrans count %} human {% plural %} human {% endblocktrans %}
Nebo lze řešit jiným vhodnějším způsobem?
V záloze mám překlady typu
msgid "human"
msgstr "člověk"
msgid "human2"
msgstr "lidé"
msgid "human5"
msgstr "lidí"
ale moc se mi to nelíbí. Nerad bych překlady v Djangu uchopil špatně.
Díky moc za reakci.