<html><body>Ještě jednou díky oběma.<div><br></div><div>To Petr - jj. Našel jsem si ty překlady u pyscripteru a přesně tohle mne mátlo... :-)</div><div><br></div><div>A web nedělám. Bavím se s wxpythonem a tam je jenom toto:</div><div><br></div><div>https://wxpython.org/Phoenix/docs/html/internationalization.html<br></div><div> </div><div>Ale vy jste mne alespoň správně nasměrovali.</div><div><br></div><div>Takže ještě jednou díky.</div><div><br></div><div>Ctibor</div><div><br><aside>
---------- Původní e-mail ----------<br>
Od: Ondrej Tuma <konference@webjet.cz><br>
Komu: python@py.cz<br>
Datum: 5. 12. 2017 13:35:32<br>
Předmět: Re: [python] Překlady programů
</aside><br><blockquote data-email="konference@webjet.cz">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>https://www.gnu.org/software/gettext/manual/gettext.html
<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=FileSystemLoader(path),
<br> undefined=MissingUndefined,
<br> extensions=['jinja2.ext.i18n'])
<br> env.install_gettext_translations(translations)
<br> template = env.get_template("sablona.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" <Ctibor.Plasek@seznam.cz> napsáno:
<br>
<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 <konference@webjet.cz>
<br>> Komu: python@py.cz
<br>> Datum: 23. 11. 2017 8: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>> https://docs.python.org/3/library/gettext.html?highlight=gettext#module-
<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>> https://poedit.net/.
<br>>
<br>> A rozhodně zajímavým Michalovým počinem je Weblate
<br>> https://weblate.org/. 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 <petr.messner@gmail.com> 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>> > - https://docs.djangoproject.com/en/2.0/topics/i18n/
<br>> > - https://docs.djangoproject.com/en/2.0/topics/i18n/translation/
<br>> > - http://babel.pocoo.org/en/latest/
<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 <Ctibor.Plasek@seznam.cz>
<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>> > > _______________________________________________
<br>> > > Python mailing list
<br>> > > python@py.cz
<br>> > > http://www.py.cz/mailman/listinfo/python
<br>> > >
<br>> > > Visit: http://www.py.cz
<br>> > >
<br>> > >
<br>>
<br>>
<br>>
<br>
<br>
<br>
<br>--
<br>Ondřej Tůma <mcbig@zeropage.cz>
<br>www: http://ipv6.mcbig.cz jabber: mcbig@jabber.cz twitter: mcbig_cz
<br>_______________________________________________
<br>Python mailing list
<br>python@py.cz
<br>http://www.py.cz/mailman/listinfo/python
<br>
<br>Visit: http://www.py.cz
<br></blockquote></div></body></html>