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
{% trans "human" %}
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.
--
--
E-mailová skupina [email protected]
Správa: http://groups.google.cz/group/django-cs
---
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny django-cs
ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete
e-mail na adresu [email protected].
Chcete-li zobrazit tuto diskusi na webu, navštivte
https://groups.google.com/d/msgid/django-cs/df7884ab-6128-4abc-b09f-fe1808564644%40googlegroups.com.
Další možnosti najdete na adrese https://groups.google.com/d/optout.