Nevím. Dokonce ani nevím, co je pgettext (během 2 vteřin jsem si přečetl, 
že umožňuje různé překlady v různých kontextech).
Jediné, co vím, že my používáme pro pluralizaci .ngettext.
To je ale v jiném projektu, než ve Djangu, takže k Django templatám 
neporadím (ale taky mě to zajímá).
Tipnul bych si ale, že přechod na ngettext by to mohl vyřešit (a ponechat 
staré .gettext překlady beze změny).



Dne pondělí 5. února 2018 18:27:15 UTC+1 PavelZet napsal(a):
>
> 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 django-cs@googlegroups.com
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 django-cs+unsubscr...@googlegroups.com.
Chcete-li zobrazit tuto diskusi na webu, navštivte 
https://groups.google.com/d/msgid/django-cs/ae336b96-a4c7-43c1-b4e1-ea99dcc039c0%40googlegroups.com.
Další možnosti najdete na adrese https://groups.google.com/d/optout.

Reply via email to