Ta funkce se speciálním názvem "_" a odpovídající wx.GetTranslation jsou právě 
obalem nad gettext.
 
Ve svých zdrojácích (jak je v té dokumentaci naznačeno) pak místo:
 
aString = u"This is a string which will be translated"

píšeš
aString = _(u"This is a string which will be translated") 
Jde o to, že externí nástroje reagují na výskyt _("xxx") ve zdrojovém textu a 
vykousnou to do toho
zdrojového tvaru pro poedit. Při běhu funkce _() použije původní řetězec jako 
klíč a v databázi
najde odpovídající překlad. Takže to xxx může být i v symbolickém jazyce. Pro 
každý jazyk bez výjimky
pak definuješ překlad. Pokud se ale předělává existující projekt, tak se prostě 
všechny řetězcové
literály obalí tou funkcí (raději ne úplně mechanicky), pustí se na to 
extraktor, použije se poedit,
a je to... (skoro :)
 
V Pythonu (verze 3) jsem nezkoušel, zda lze _(u"xxxx") nahradit pythonštějším 
_('xxxx')
-- tj. bez u a s apostrofy místo uvozovek. Z hlediska Pythonu je to stejné, ale 
musí se chytat
ten extraktor, který zpracovává zdrojové texty a připravuje podklady pro poedit.
 
Petr
______________________________________________________________
Od: "Ctibor.Plasek" <ctibor.pla...@seznam.cz>
Komu: "Konference PyCZ" <python@py.cz>
Datum: 05.12.2017 13:49
Předmět: Re: [python] Překlady programů

Ještě jednou díky oběma.To Petr - jj.  Našel jsem si ty překlady u pyscripteru 
a přesně tohle mne mátlo... :-)A web nedělám. Bavím se s wxpythonem a tam je 
jenom toto:https://wxpython.org/Phoenix/docs/html/internationalization.html Ale 
vy jste mne alespoň správně nasměrovali.Takže ještě jednou díky.Ctibor
---------- Původní e-mail ----------
Od: Ondrej Tuma <konfere...@webjet.cz>
Komu: python@py.cz
Datum: 5. 12. 2017 13:35:32
Předmět: Re: [python] Překlady programů 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 _______________________________________________ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
----------

_______________________________________________
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python 
<http://www.py.cz/mailman/listinfo/python>

Visit: http://www.py.cz <http://www.py.cz>

_______________________________________________
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz

Odpovedet emailem