Nazvy locales u glibc (nejen ceskych) a lokalizace vs. X
Petr Kolar
PETR.KOLAR na vslib.cz
Pondělí Říjen 5 12:38:40 CEST 1998
Pripomenu puvodni myslenku: ceske locales od glibc by mely byt
v [/usr/share/locale/]cs_CZ, katalogy zprav programu v cs. Ale promenne
prostredi pro lokalizaci LC_* a LANG by se nastavovaly na czech, coz je
diky aliasu v /usr/share/locale/locale.alias totez jako cs_CZ.ISO8859-2.
Trochu to poopravim: LANG by se melo nastavovat na cs, aby bylo mozne
najit manualove stranky a Xresources. Tezko rici, jestli je to chyba nebo
umysl.
Vladimir Michl <michlv na risc.upol.cz> wrote:
> No ja Red Hat nemam, takze mohu pouze posoudit Debinovske reseni.
> Ale jeste drive. Definici souboru /usr/share/locale/locale.alias a obsah
> tohoto adresare si podle me resi kazda distribuce zvlast (alespon jsem
> zadne doporuceni nikde v glibc nevidel, no ani jsem moc nehledal. Ve
Ne, soubor locale.alias je soucasti glibc (je ve zdrojacich v adresari
intl).
> zdrojacich glibc jsem take nevidel zadne locale.alias). To proc maji v
> Red Hatu neco tak a druhe onak, podle me nema zadny hlubsi smysl. V
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> Debianu je vse tak, ze katalogy jsou v cs, hu, de, ... a locales v cs_CZ,
^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
> hu_HU, de_DE, ... (oznaceni jsem si zrovna vymyslel). Proc to takhle v
> Debianu je je snad jasne.
Tady si protirecite. V obou zminenych distribucich je to stejne
(krome toho, ze v Redhatu se omylem misty nekde pouziva cz misto cs),
takze si myslim, ze to neni zalezitost distribuce, ale locales a glibc.
> To je divne. Ja jsem si s tim vcera doma trochu hral, a zjistil jsem, ze
> Xovy mechanizmus se velice podobny tomu z libc, tj. napred se hleda v
> aliasech oznaceni z prom. prostredi a podle vysledku se pak postupuje dale
> locale.dir, compose.dir. To ze se ti to tak chovalo muze byt zpusobeno
> aliasem v X aliasech. Ja jsem ve svych nasel:
>
> czech cs_CS.ISO8859-2
To je samozrejme spatne. Chystam se to poslat jako bug-report. Navic
v X locale.alias chybi alias
cs_CZ cs_CZ.ISO8859-2
- teda v R6.4 uz tam je, ale chyba s czech je i v R6.4 - viz
http://ftp.gwdg.de/pub/x11/x.org/pub/R6.4/xc/nls/locale.alias
nebo jine zrcadlo X11R6.4.
> a je mozne, ze se po aplikaci aliasu znovu diva, zda to neni alias a to
> opakuje tak dlouho, dokud to alias je.
Podle toho jak je to ve zdrajacich k X, ve vasem programku, i v kousku,
ktery posilal Zdenek Kabelac <kabi na fi.muni.cz> dne Mon, 7 Sep 1998 16:54:51
+0200 (MEST) se Subject: Re: Bug nalezen: isprint() + X11 programovani,
je videt, ze X aplikace nejdrive nahlednou do normalnich locales a pak do
Xlocales a pak snad jeste jednou do locales.
BTW: V tech chybovych hlasenich by melo byt uvedeno jake locales neni
definovano. Xterm to sice take nedela, ale treba Natscape ano a je to
docela uzitecne, kdyz jsou problemy...
> To czech se mi nelibi jednak ze programy neumi velice jednoduse zjistit
> spravne oznaceni locale (aliasy a hledani spravneho adresare) a zadruhe
O to se snad obvykle postaraji knihovni funkce (vyjimkou je asi
hledani zminenych Xresources a man stranek).
> ze czech nevyhovuje norme XPG4. Ve zdrojaku glibc/locale/setlocale.h
> take uvadi jeste jednu varianu oznaceni a ted si nejsem jist, zda ji to
> nevyhovuje, ale asi ne.
Kde to nevyhovuje norme XPG4? Jako jmeno locale, nebo jako to, co
uzivatel nastavuje do promennych prostredi LC_* a LANG (tj. jako alias).
> Kodovani v katalogu ulozeno je a to v prvni zpravicce v polozce Content-Type.
> Osobne by me zajimalo jak moc trivialni ci nikoli by byla ta konverze, kdyz
> uvazime, ze by musela byt univerzalni z jakehokoliv kodovani do unicode.
> Podle me je to stejne zbytecne. Da se to vyresit velice jednoduse i bez
> teto konverze.
Locales ale snad obsahuji popis znakove sady ISO-8859-2, takze konverze
by nemela delat problemy...
> Ja jsem se do zdrojaku man nedival, ale je mozne ze preferuje LANG. Po
> experimentech v X jsem narazil na to, ze ony berou pri hledani resources
> pouze promenou LANG. Pokud neni nastavena, tak se o hledani lokalizovanych
> resources ani nepokousi. Ted je otazkou zda to tak ma byt, nebo zda je to
> chyba.
Ano, to je otazka. Program man promennou LANG nepreferuje, ale podle
vseho na nic jineho pri hledani souboru s man strankou nehledi.
> > > je v promenych prostredi, a pouziji to. Lepe by bylo, pokud by existovala
> > > funkce glibc, ktere by se dodal seznam adresaru, a ona by vratila seznam
> > > existujicich adresaru pro dotycny jazyk (napr: /usr/man -> /usr/man/cs,
> > > /usr/man/cs.iso88592).
> Mozna az budu mit nekdy cas a naladu, tak bych mohl navrhnout vyvojarum
> libintl (puvodne soucast gettextu, ted uz soucast glibc) toto vylepseni.
> Navic by se tim zabyly dve mouchy jednou ranou. Jednak lepsi pristup pro
> aplikace typu man (potreba ruznych adresaru v zavislosti na jazyku)
> k lokalizaci a zadruhe by tento kod sel vyuzit zaroven pro hledani
> locales i katalogu (zatim je, pokud jsem dobre videl, pro oboje zvlastni
> kod, ktery je ale uplne stejny).
Dokud to tam neni, je to jenom idea. Zkousim se zde zabyvat jenom tim,
co soucasna glibc umi (nebo by mela umet).
> Dalsi vec se tyka X. Chovani ktere popisu se projevuje i na prilozenem
> testovacim programku. Staci jej prelozit nasledovne:
>
> gcc -o loctest loctest.c -L/usr/X11R6/lib -lX11
Bohuzel se me ho nedari pod Red hat 5.1 vubec prelozit. Stale mele
undefined reference to '_Xsetlocale'.
S pozdravem
--
*** Petr Kolar ***
Department of Information Technologies, Technical University of Liberec
Voronezska 1329, 461 17 Liberec, Czech Republic
Phone: +420-48-535-2371 Fax: +420-48-535-2229
E-mail: Petr.Kolar na vslib.cz http://asterix.vslib.cz/staff/kolar.html
Další informace o konferenci Linux