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

Visit: http://www.py.cz

Odpovedet emailem