<div dir="ltr">V dokumentaci je napsano:<div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Comment lines starting with #: contain references to the program’s source code.</blockquote><div class="gmail_extra"><br></div><div class="gmail_extra">Je to komentar, ktery xgettext vytvori automaticky, abys vedel, kde ve zdrojovem kodu to konkretne je. Nic vic, nic min. Nebo ne? :)</div><div class="gmail_extra"><br></div><div class="gmail_extra">PM</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_quote">Dne 5. prosince 2017 13:35 Ondrej Tuma <span dir="ltr"><<a href="mailto:konference@webjet.cz" target="_blank">konference@webjet.cz</a>></span> napsal(a):<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Hoj,<br>
<br>
no tak to opravdu není. Ten princip je jednoduchý, a doporučuji si o<br>
gettextu něco napsat. Žádný hezký český zdroj mě ale nenapadá. Anglický<br>
asi nejlépe:<br>
<br>
<a href="https://www.gnu.org/software/gettext/manual/gettext.html" rel="noreferrer" target="_blank">https://www.gnu.org/software/<wbr>gettext/manual/gettext.html</a><br>
<br>
Ve zkratce je postup následující:<br>
<br>
v kódu, kde se má doplnit překlad se použije funkce gettext, případně<br>
alias podtržítko (_):<br>
<br>
from gettext import gettext<br>
print(gettext("Hello world"))<br>
<br>
Následně se pomocí nástrojů gettextu vygeneruje pot soubor:<br>
<br>
xgettext -o aplikace.pot --language=python<br>
<br>
Z něj se pak různým způsobem dá vytvořit soubor s překlady, nejlépe pak:<br>
<br>
msginit -l cs (pro český jazyk)<br>
<br>
výsledný soubor cs.po se edituje v jednom z nástrojů, jenž jsem psal a<br>
nakonec se vygeneruje binární katalog:<br>
<br>
msgfmt -o cs/LC_MESSAGES/aplikace.mo cs.po<br>
<br>
V kódu je pak třeba definovat jak se katalog jmenuje (název<br>
katalogu bez přípony).<br>
<br>
from gettext import bindtextdomain<br>
bindtextdomain('aplikace', localedir='/usr/share/locale')<br>
<br>
V případě, že používáš webovou aplikaci a šablony (jinja2) pak je třeba<br>
vytvořit objekt translation, ten se pak předává při generování výstupu.<br>
<br>
from gettext import translation<br>
translations = translation('aplikace',<br>
localedir="/usr/share/locale",<br>
languages=[cs, sk],<br>
fallback=True)<br>
<br>
env = Environment(loader=<wbr>FileSystemLoader(path),<br>
undefined=MissingUndefined,<br>
extensions=['jinja2.ext.i18n']<wbr>)<br>
env.install_gettext_<wbr>translations(translations)<br>
template = env.get_template("sablona.<wbr>html")<br>
<br>
<br>
localedir je cesta k adresari, ve kterem jsou adresare s<br>
jazyky, v nich LC_MESSAGES a v nich aplikace.mo<br>
<br>
Příklady sem nezkoušel, tak snad sem je napsal správně. Pak to funguje<br>
tak, že gettext natáhne katalogy, dle nastavených jazyků do paměti a<br>
podle toho, jestli najde string v příslušném jazykovém katalogu<br>
přeložený (postupně zkouší všechny jazyky), vrátí přeložený string.<br>
<br>
Asi o tom zase napíšu článek, ať se pořádně znemožním :-)<br>
<br>
Ondra<br>
<br>
V Tue, 05 Dec 2017 11:21:26 +0100 (CET)<br>
"Ctibor.Plasek" <<a href="mailto:Ctibor.Plasek@seznam.cz">Ctibor.Plasek@seznam.cz</a>> napsáno:<br>
<div class="gmail-HOEnZb"><div class="gmail-h5"><br>
> Ahoj.<br>
> Díky moc za rady - teda spíš za nasměrování :-) Konečně vím, co mám<br>
> hledat...<br>
><br>
> Sice to zatím moc nechápu (zdá se mi, že se odkazuje na určitý přesný<br>
> řádek v kódu,<br>
><br>
> což by asi bylo nešťastné při jakémkoliv doplňování - takže to<br>
> nakonec asi nebude pravda)<br>
><br>
><br>
><br>
><br>
> Ctibor<br>
> ---------- Původní e-mail ----------<br>
> Od: Ondrej Tuma <<a href="mailto:konference@webjet.cz">konference@webjet.cz</a>><br>
> Komu: <a href="mailto:python@py.cz">python@py.cz</a><br>
> Datum: <a href="tel:23.%2011.%202017%208" value="+420231120178">23. 11. 2017 8</a>:09:17<br>
> Předmět: Re: [python] Překlady programů<br>
> "Hoj,<br>
><br>
> GTK+ používá gettext také.<br>
><br>
> V Pythonu používám přímo gettext modul:<br>
> <a href="https://docs.python.org/3/library/gettext.html?highlight=gettext#module-" rel="noreferrer" target="_blank">https://docs.python.org/3/<wbr>library/gettext.html?<wbr>highlight=gettext#module-</a><br>
> gettext<br>
> Narozdíl od klasické C knihovny, se s ním pracuje o něco lépe a<br>
> pohodlněji.<br>
><br>
> Mezi ty nejznámější programy na správu překladů patří poedit<br>
> <a href="https://poedit.net/" rel="noreferrer" target="_blank">https://poedit.net/</a>.<br>
><br>
> A rozhodně zajímavým Michalovým počinem je Weblate<br>
> <a href="https://weblate.org/" rel="noreferrer" target="_blank">https://weblate.org/</a>. Zatím mám u něj jeden free software a to teprve<br>
> pár dní, takže zkušenosti nemám,<br>
><br>
> Ondra<br>
><br>
> V Thu, 23 Nov 2017 01:15:47 +0100<br>
> Petr Messner <<a href="mailto:petr.messner@gmail.com">petr.messner@gmail.com</a>> napsáno:<br>
><br>
> > Ahoj,<br>
> ><br>
> > gettext je standard. Zkus se podívat na tyto odkazy - pokud neděláš<br>
> > web, tak si ty webové věci od toho odmysli :)<br>
> ><br>
> > - <a href="https://docs.djangoproject.com/en/2.0/topics/i18n/" rel="noreferrer" target="_blank">https://docs.djangoproject.<wbr>com/en/2.0/topics/i18n/</a><br>
> > - <a href="https://docs.djangoproject.com/en/2.0/topics/i18n/translation/" rel="noreferrer" target="_blank">https://docs.djangoproject.<wbr>com/en/2.0/topics/i18n/<wbr>translation/</a><br>
> > - <a href="http://babel.pocoo.org/en/latest/" rel="noreferrer" target="_blank">http://babel.pocoo.org/en/<wbr>latest/</a><br>
> ><br>
> > Pokud používáš nějaký framework (webový, qt, gtk, ...), najdi si<br>
> > dokumentaci o internacionalizaci (i18n) k němu :)<br>
> ><br>
> > Obecně chceš soubor a ne databázi, protože soubor budeš mít<br>
> > normálně v gitu, kolegové posílat pull requesty na to apod. S<br>
> > formátem gettextu umí pracovat hromada nástrojů, včetně statické<br>
> > analýzy kódu pro vyhledávání nepřeložených řetězců, výpočet<br>
> > translation coverage...<br>
> ><br>
> > PM<br>
> ><br>
> > Dne 23. listopadu 2017 0:32 Ctibor.Plasek <<a href="mailto:Ctibor.Plasek@seznam.cz">Ctibor.Plasek@seznam.cz</a>><br>
> > napsal(a):<br>
> ><br>
> > > Ahoj.<br>
> > > Přemýšlím nad následujícím problémem - jak jednoduše vytvořit<br>
> > > vícejazyčnou verzi programu.<br>
> > > Vytvořit databázi, nebo textové soubory? Jakým nejlepším způsobem<br>
> > > říct programu, že pokud je zapnutá volba "česky"¨<br>
> > > tak že první v menu bude "Soubor", když anglicky tak že to bude<br>
> > > "File" atd. Určitě jste už tyto problémy řešili, tak jsem se<br>
> > > chtěl zeptat, co a jakým způsobem je nejvýhodnější (i pro event.<br>
> > > další rozšíření překladů)<br>
> > ><br>
> > > Díky za rady<br>
> > ><br>
> > > ______________________________<wbr>_________________<br>
> > > Python mailing list<br>
> > > <a href="mailto:python@py.cz">python@py.cz</a><br>
> > > <a href="http://www.py.cz/mailman/listinfo/python" rel="noreferrer" target="_blank">http://www.py.cz/mailman/<wbr>listinfo/python</a><br>
> > ><br>
> > > Visit: <a href="http://www.py.cz" rel="noreferrer" target="_blank">http://www.py.cz</a><br>
> > ><br>
> > ><br>
><br>
><br>
><br>
<br>
<br>
<br>
--<br>
Ondřej Tůma <<a href="mailto:mcbig@zeropage.cz">mcbig@zeropage.cz</a>><br>
www: <a href="http://ipv6.mcbig.cz" rel="noreferrer" target="_blank">http://ipv6.mcbig.cz</a> jabber: <a href="mailto:mcbig@jabber.cz">mcbig@jabber.cz</a> twitter: mcbig_cz<br>
</div></div><br>______________________________<wbr>_________________<br>
Python mailing list<br>
<a href="mailto:python@py.cz">python@py.cz</a><br>
<a href="http://www.py.cz/mailman/listinfo/python" rel="noreferrer" target="_blank">http://www.py.cz/mailman/<wbr>listinfo/python</a><br>
<br>
Visit: <a href="http://www.py.cz" rel="noreferrer" target="_blank">http://www.py.cz</a><br>
<br></blockquote></div><br></div></div></div>