Path: csiph.com!news.mixmin.net!news.unit0.net!peer01.am4!peer.am4.highwinds-media.com!peer04.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!fx16.am4.POSTED!not-for-mail Received-SPF: pass (Address passes the Sender Policy Framework) SPF=MAILFROM; sender=konference@webjet.cz; remoteip=::ffff:195.146.111.106; remotehost=; helo=mail.webjet.cz; receiver=hugo.zagamma.cz; From: Ondrej Tuma In-Reply-To: <256.D{9T.37HTVLRLeNL.1Q9dCc@seznam.cz> Organization: Blackmouse X-Mailer: Claws Mail 3.15.1-dirty (GTK+ 2.24.31; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="=_hugo.zagamma.cz-17672-1512477322-0001-2" Subject: Re: [python] =?utf-8?q?P=C5=99eklady_program=C5=AF?= X-BeenThere: python@py.cz X-Mailman-Version: 2.1.24 Precedence: list List-Id: Konference PyCZ List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: cz.comp.lang.python Message-ID: X-Mailman-Original-Message-ID: <20171205133519.667e25c3@dell.kancelar.seznam.cz> X-Mailman-Original-References: <20171123080800.531f3977@dell.kancelar.seznam.cz> <256.D{9T.37HTVLRLeNL.1Q9dCc@seznam.cz> References: <20171123080800.531f3977@dell.kancelar.seznam.cz> <256.D{9T.37HTVLRLeNL.1Q9dCc@seznam.cz> <20171205133519.667e25c3@dell.kancelar.seznam.cz> Lines: 207 X-Complaints-To: abuse@usenet-news.net NNTP-Posting-Date: Tue, 05 Dec 2017 12:35:24 UTC Date: Tue, 5 Dec 2017 13:35:19 +0100 X-Received-Body-CRC: 3032732033 X-Received-Bytes: 10187 Xref: csiph.com cz.comp.lang.python:3216 This is a MIME-formatted message. If you see this text it means that your E-mail software does not support MIME-formatted messages. --=_hugo.zagamma.cz-17672-1512477322-0001-2 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hoj, no tak to opravdu nen=C3=AD. Ten princip je jednoduch=C3=BD, a doporu=C4=8D= uji si o gettextu n=C4=9Bco napsat. =C5=BD=C3=A1dn=C3=BD hezk=C3=BD =C4=8Desk=C3=BD = zdroj m=C4=9B ale nenapad=C3=A1. Anglick=C3=BD asi nejl=C3=A9pe: https://www.gnu.org/software/gettext/manual/gettext.html Ve zkratce je postup n=C3=A1sleduj=C3=ADc=C3=AD: v k=C3=B3du, kde se m=C3=A1 doplnit p=C5=99eklad se pou=C5=BEije funkce get= text, p=C5=99=C3=ADpadn=C4=9B alias podtr=C5=BE=C3=ADtko (_): from gettext import gettext print(gettext("Hello world")) N=C3=A1sledn=C4=9B se pomoc=C3=AD n=C3=A1stroj=C5=AF gettextu vygeneruje po= t soubor: xgettext -o aplikace.pot --language=3Dpython Z n=C4=9Bj se pak r=C5=AFzn=C3=BDm zp=C5=AFsobem d=C3=A1 vytvo=C5=99it soub= or s p=C5=99eklady, nejl=C3=A9pe pak: msginit -l cs (pro =C4=8Desk=C3=BD jazyk) v=C3=BDsledn=C3=BD soubor cs.po se edituje v jednom z n=C3=A1stroj=C5=AF, j= en=C5=BE jsem psal a nakonec se vygeneruje bin=C3=A1rn=C3=AD katalog: msgfmt -o cs/LC_MESSAGES/aplikace.mo cs.po V k=C3=B3du je pak t=C5=99eba definovat jak se katalog jmenuje (n=C3=A1zev katalogu bez p=C5=99=C3=ADpony). from gettext import bindtextdomain bindtextdomain('aplikace', localedir=3D'/usr/share/locale') V p=C5=99=C3=ADpad=C4=9B, =C5=BEe pou=C5=BE=C3=ADv=C3=A1=C5=A1 webovou apli= kaci a =C5=A1ablony (jinja2) pak je t=C5=99eba vytvo=C5=99it objekt translation, ten se pak p=C5=99ed=C3=A1v=C3=A1 p=C5=99= i generov=C3=A1n=C3=AD v=C3=BDstupu. from gettext import translation translations =3D translation('aplikace', localedir=3D"/usr/share/locale",=20 languages=3D[cs, sk], fallback=3DTrue) =09 env =3D Environment(loader=3DFileSystemLoader(path), undefined=3DMissingUndefined, extensions=3D['jinja2.ext.i18n']) env.install_gettext_translations(translations) template =3D 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=C5=99=C3=ADklady sem nezkou=C5=A1el, tak snad sem je napsal spr=C3=A1vn= =C4=9B. Pak to funguje tak, =C5=BEe gettext nat=C3=A1hne katalogy, dle nastaven=C3=BDch jazyk=C5= =AF do pam=C4=9Bti a podle toho, jestli najde string v p=C5=99=C3=ADslu=C5=A1n=C3=A9m jazykov=C3= =A9m katalogu p=C5=99elo=C5=BEen=C3=BD (postupn=C4=9B zkou=C5=A1=C3=AD v=C5=A1echny jazyk= y), vr=C3=A1t=C3=AD p=C5=99elo=C5=BEen=C3=BD string. Asi o tom zase nap=C3=AD=C5=A1u =C4=8Dl=C3=A1nek, a=C5=A5 se po=C5=99=C3=A1= dn=C4=9B znemo=C5=BEn=C3=ADm :-) Ondra V Tue, 05 Dec 2017 11:21:26 +0100 (CET) "Ctibor.Plasek" naps=C3=A1no: > Ahoj. > D=C3=ADky moc za rady - teda sp=C3=AD=C5=A1 za nasm=C4=9Brov=C3=A1n=C3=AD= :-) Kone=C4=8Dn=C4=9B v=C3=ADm, co m=C3=A1m=20 > hledat... >=20 > Sice to zat=C3=ADm moc nech=C3=A1pu (zd=C3=A1 se mi, =C5=BEe se odkazuje = na ur=C4=8Dit=C3=BD p=C5=99esn=C3=BD > =C5=99=C3=A1dek v k=C3=B3du, >=20 > co=C5=BE by asi bylo ne=C5=A1=C5=A5astn=C3=A9 p=C5=99i jak=C3=A9mkoliv do= pl=C5=88ov=C3=A1n=C3=AD - tak=C5=BEe to > nakonec asi nebude pravda) >=20 >=20 >=20 >=20 > Ctibor > ---------- P=C5=AFvodn=C3=AD e-mail ---------- > Od: Ondrej Tuma > Komu: python@py.cz > Datum: 23. 11. 2017 8:09:17 > P=C5=99edm=C4=9Bt: Re: [python] P=C5=99eklady program=C5=AF=20 > "Hoj,=20 >=20 > GTK+ pou=C5=BE=C3=ADv=C3=A1 gettext tak=C3=A9.=20 >=20 > V Pythonu pou=C5=BE=C3=ADv=C3=A1m p=C5=99=C3=ADmo gettext modul:=20 > https://docs.python.org/3/library/gettext.html?highlight=3Dgettext#module- > gettext=20 > Narozd=C3=ADl od klasick=C3=A9 C knihovny, se s n=C3=ADm pracuje o n=C4= =9Bco l=C3=A9pe a=20 > pohodln=C4=9Bji.=20 >=20 > Mezi ty nejzn=C3=A1m=C4=9Bj=C5=A1=C3=AD programy na spr=C3=A1vu p=C5=99ek= lad=C5=AF pat=C5=99=C3=AD poedit=20 > https://poedit.net/.=20 >=20 > A rozhodn=C4=9B zaj=C3=ADmav=C3=BDm Michalov=C3=BDm po=C4=8Dinem je Webla= te=20 > https://weblate.org/. Zat=C3=ADm m=C3=A1m u n=C4=9Bj jeden free software = a to teprve=20 > p=C3=A1r dn=C3=AD, tak=C5=BEe zku=C5=A1enosti nem=C3=A1m,=20 >=20 > Ondra=20 >=20 > V Thu, 23 Nov 2017 01:15:47 +0100=20 > Petr Messner naps=C3=A1no:=20 >=20 > > Ahoj,=20 > >=20 > > gettext je standard. Zkus se pod=C3=ADvat na tyto odkazy - pokud ned=C4= =9Bl=C3=A1=C5=A1=20 > > web, tak si ty webov=C3=A9 v=C4=9Bci od toho odmysli :)=20 > >=20 > > - https://docs.djangoproject.com/en/2.0/topics/i18n/=20 > > - https://docs.djangoproject.com/en/2.0/topics/i18n/translation/=20 > > - http://babel.pocoo.org/en/latest/=20 > >=20 > > Pokud pou=C5=BE=C3=ADv=C3=A1=C5=A1 n=C4=9Bjak=C3=BD framework (webov=C3= =BD, qt, gtk, ...), najdi si=20 > > dokumentaci o internacionalizaci (i18n) k n=C4=9Bmu :)=20 > >=20 > > Obecn=C4=9B chce=C5=A1 soubor a ne datab=C3=A1zi, proto=C5=BEe soubor b= ude=C5=A1 m=C3=ADt > > norm=C3=A1ln=C4=9B v gitu, kolegov=C3=A9 pos=C3=ADlat pull requesty na = to apod. S > > form=C3=A1tem gettextu um=C3=AD pracovat hromada n=C3=A1stroj=C5=AF, v= =C4=8Detn=C4=9B statick=C3=A9 > > anal=C3=BDzy k=C3=B3du pro vyhled=C3=A1v=C3=A1n=C3=AD nep=C5=99elo=C5= =BEen=C3=BDch =C5=99et=C4=9Bzc=C5=AF, v=C3=BDpo=C4=8Det > > translation coverage...=20 > >=20 > > PM=20 > >=20 > > Dne 23. listopadu 2017 0:32 Ctibor.Plasek =20 > > napsal(a):=20 > >=20 > > > Ahoj.=20 > > > P=C5=99em=C3=BD=C5=A1l=C3=ADm nad n=C3=A1sleduj=C3=ADc=C3=ADm probl= =C3=A9mem - jak jednodu=C5=A1e vytvo=C5=99it=20 > > > v=C3=ADcejazy=C4=8Dnou verzi programu.=20 > > > Vytvo=C5=99it datab=C3=A1zi, nebo textov=C3=A9 soubory? Jak=C3=BDm ne= jlep=C5=A1=C3=ADm zp=C5=AFsobem=20 > > > =C5=99=C3=ADct programu, =C5=BEe pokud je zapnut=C3=A1 volba "=C4=8De= sky"=C2=A8=20 > > > tak =C5=BEe prvn=C3=AD v menu bude "Soubor", kdy=C5=BE anglicky tak = =C5=BEe to bude=20 > > > "File" atd. Ur=C4=8Dit=C4=9B jste u=C5=BE tyto probl=C3=A9my =C5=99e= =C5=A1ili, tak jsem se > > > cht=C4=9Bl zeptat, co a jak=C3=BDm zp=C5=AFsobem je nejv=C3=BDhodn=C4= =9Bj=C5=A1=C3=AD (i pro event. > > > dal=C5=A1=C3=AD roz=C5=A1=C3=AD=C5=99en=C3=AD p=C5=99eklad=C5=AF)=20 > > >=20 > > > D=C3=ADky za rady=20 > > >=20 > > > _______________________________________________=20 > > > Python mailing list=20 > > > python@py.cz=20 > > > http://www.py.cz/mailman/listinfo/python=20 > > >=20 > > > Visit: http://www.py.cz=20 > > >=20 > > >=20 >=20 >=20 >=20 --=20 Ond=C5=99ej T=C5=AFma www: http://ipv6.mcbig.cz jabber: mcbig@jabber.cz twitter: mcbig_cz --=_hugo.zagamma.cz-17672-1512477322-0001-2 Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit Content-Description: Digitální podpis OpenPGP -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEdlj+NNFMWaEf/Gl1Bd+niyV86poFAlomkocACgkQBd+niyV8 6poOfBAAn+3X1yPjmXX+FVwrkTSF4k/qycn42xn+wglBqAcGmK2bay8qLGcPvLtF 86rKYSinW1s/4fg/eIYJf1dqAc/eqxrL55kcdkdRWqyFP4d/fqnOwMpy1k37nsuT ZuZeDxYTQKjGJiCK924fg3Wls1XpeJer7i+pkpEwAael2vMs6z5FnmvQgb4eXZXP 4xnjYoWKo8XgvYIisMaZhWNln9oTcGVhFmfvDeElsykxbcue722/JWNpJNL/Ighw gXHpzLV0AC1RHuY2VzpCYFaNatUHRlE23pO43+zm4c2qYV4L+oLDzlfFHHW+PHib IEW5aG1tOwJR087BVQY0IeZLKjOgLbdcxxQXgnOweyNcO/UaOpxe6aGniDo6mWpW aKDD6sk0i4RgnIVjkMn5PtZPPv9pAlX3i/x2wQ1vuiOd5r2A/o0iQBUGNYZVI99+ zUxAUIWs4cUBhYm+CtdWKAaLM8FxF/yboLZ0P9V2SaOUgZL0xIGWJt4vBtGdA0Hk 46d7hqOk4GQE7U0+Ikg/T1F0FK5G8gh970jjnG/ek4nlwJSoyEGMYN7d53pG8C5a 2CWL8Tm2WLhoBGCyv5FIvw8eaLrcwwYJ6VrTRMl8QKanrxHBZkUNUBH9ok1DAFwO ucDDWZBGEEc9hDLXWmegXNNo0yov9xdYdKwGHIDZ74CeS0dH1FE= =aUp7 -----END PGP SIGNATURE----- --=_hugo.zagamma.cz-17672-1512477322-0001-2--