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.

Reply via email to