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