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