Nazvy locales u glibc (nejen ceskych) - dlouhe

Petr Kolar PETR.KOLAR na vslib.cz
Čtvrtek Říjen 1 16:56:46 CEST 1998


Vladimir Michl <michlv na risc.upol.cz> wrote:
> Tuto odpoved pisu po ruznych utrapach

   Dekuji za ni.

>  Zde bych to trochu opravil. Nejprve se glibc podiva, zda je 
> oznaceni locales v aliasech, je-li nahradi se, neni-li bere se puvodni.
> Budu prodpokladat ze jsme ziskali cs_CZ.ISO-8859-2. Katalogy 
> nebo locales se tedy budou hledat adresarich:
> /usr/share/locale/cs_CZ.ISO-8859-2 - puvodni tvar
> /usr/share/locale/cs_CZ.iso88592 - normalizace zapisu kodovani
> /usr/share/locale/cs_CZ
> /usr/share/locale/cs.ISO-8859-2
> /usr/share/locale/cs.iso88592
> /usr/share/locale/cs

   Co kdyz se nastavi cs_CZ.iso88592 a adresar je cs_CZ.ISO-8859-2? Mam 
pocit, ze byl stejne nalezen. Ale mozna, ze to naslo az adresar cs, coz
by vzhledem k popsanemu mechanismu nebyl zadny div.

>  Proc kdyz z aliasu ziskam cs_CZ.ISO8859-2, kde se to oreze?

   To nevim, ale pri nastaveni LANG=czech a chybejicim (nebo spatnem) radku 
pro cs_CZ mi netscape hlasil, ze nemuze najit locale cs_CZ pro libX...

>  Pokud bude vse fungovat spravne tak by melo byt zcela jedno, zda 
> nastavim czech nebo cs, alespon pro glibc. Ovsem otazkou je, zda chci 
> upravovat locale.alias. Ale nemel by byt takovy problem udelat v nem 
> zmeny a poslat vyvojarum glibc.

   To je prave to, co by se podle mne delat NEMELO! Staci se podivat na
/usr/share/locale/locale.alias jaky je to pekny a konzistentni soubor
- na rozdil od /usr/X11R6/lib/X11/locale/locale.alias. Myslim, ze neni 
dobre zaneradit /usr/share/locale/locale.alias spoustou aliasu pro cestinu, 
kdyz tam pro jine jazyky je jen jeden (nebo dva - danish/dansk).

> >    Katalogy s ceskymi hlasenimi programu ovsem nebudou v adresari
> > /usr/share/locale/czech/LC_MESSAGES nebo
> > /usr/share/locale/cs_CZ/LC_MESSAGES, ale v 
> > /usr/share/locale/cs/LC_MESSAGES. Diky aliasu czech->cs_CZ.ISO8859-2
> 
> > a pri neuspechu v /usr/share/locale/cs/LC_MESSAGES. Kdyby nekdo psal treba 
> > ucetni program pro francouzsky mluvici belgicany, a byly by v nem vety plne 
> > Bruselu a belgickych franku, at da jeho katalog do fr_BE a ne do fr, ale
> > pro cestinu by se pro katalogy mel pouzivat adresar cs a ne cs_CZ.
> 
> Toto je docela rozumne, cestina je pouze jedna, takze proc katalogy 
> umistovat v adresari cs_CZ. Ma to ale jednu vadu, pokud by ruzni uzivatele
> pouzivali ruzne nastaveni konzole a to jedni ISO 8859-2 a druzi treba 
> UNICODE, pak by bylo treba mit katalogy v cs.iso88592 a cs.unicode a 

   Ted zkusim obhajit svuj navrh: Nevite jestli by fungovalo pokud nekdo 
bude mit nastavene cs_CZ.unicode a katalogy zprav budou v cs v ISO-8859-2.
Pak by asi muselo byt v katalogu poznamenano v jakem je kodovani a glibc
by hlasky vybrane z katalogu v ISO-8859-2 musela pred pouzitim 
prekonvertovat do unicode.

> locales v cs_CZ.iso88592.

Pak by asi musely byt i unicodove locales, ne?

> stejny jazyk vice kodovani (tj. bylo by spravcem serveru narizeno jedno),
> pak je navrzene reseni dobre (tj. katalogy v cs, definice locales v
> cs_CZ). I kdyz mi trochu vadi nemoznost (alespon teoreticka) pouzivat 
> zaroven iso88592 a UNICODE. 

   Myslim, ze glibc je konstruovana tak, aby toto slo (pravdepodobne i 
takove veci jako treba cestina (nejak orezana) v prostredi ISO-8859-1).
 
> Ted jeste jak nastavit LC_ALL (nebo podobne). Nastaveni na czech ma 
> jeden neprijemny dusledek na man a podobne aplikace a na hledani resources 
> u X. Man bude ceske stranky hledat v adresari /usr/man/czech, misto v 
> adresari /usr/man/cs nebo /usr/man/cs.iso88592. Taktez resources se budou 
> hledat v adresarich ./czech/, /usr/lib/X11/czech/app-defaults misto
> v ./cs/, /usr/lib/X11/cs/app-defaults/ nebo /cs.iso88592/, ...

Minimalne u manualovych stranek je vyjimka v poradi v jakem se pouzivaji
LC_ALL, LC_*, LANG - i kdyz nastavite vsechny LC_* na czech a LANG na cs,
tak se stranky /usr/man/cs najdou. Nezkousel jsem, jak je to u Xresources.
Man je jenom jeden program, a je mozna spatne...

> Je to z toho duvodu, ze jedine misto, kde muze aplikace sehnat oznaceni 
> locales je v promenych prostredi, a nikomu se nechce delat slozite 
> hledani spravneho oznaceni (hledani adresaru, aliasu). Proste vezmou to co 
> 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).

   Pokud by...
 
> Proto navrhuji nasledujici 2 reseni:
> 1, pouze jedno kodovani:
>    LC_ALL=cs
>    upravit locale.alias
             ^^^^^^^^^^^^
>    katalogy v /usr/share/locale/cs
>    locales v /usr/share/locale/cs_CZ
>    ceske man stranky v /usr/man/cs - prevzato z LC_ALL
>    ceske resources v /usr/lib/X11/cs/app-defaults - LC_ALL
>    ...
> 
> 2, vice kodovani:
>    LC_ALL=cs.iso88592
>    upravit locale.alias, glibc, X11
             ^^^^^^^^^^^^  ^^^^^
>    katalogy v /usr/share/locale/cs.iso88592
>    locales v /usr/share/locale/cs_CZ.iso88592
>    ceske man stranky v /usr/man/cs.iso88592 - prevzato z LC_ALL
>    ceske resources v /usr/lib/X11/cs.iso88592/app-defaults - LC_ALL

   Mne prave pripada, ze v pripade locales jsou autori glibc jedini, co 
vedi, co delaji. Takze bych hledal chyby spise v X, aplikacich, RedHatu
apod. Take se tim nevysvetluje fakt, ktery u mne vedl k napsani puvodni
zpravy: proc jsou v RedHatu (jak to vypada jinde - Debian apod.?)
v /usr/share/locale adresare da a da_DK, es a es_ES, fi a fi_FI, hu a 
hu_HU, atd. a katalogy zprav jsou v da, es fi, hu apod., zatimco ostatni
locales v da_DK, es_ES, fi_FI, hu_HU atd.. To snad neni chyba RedHatu, to 
musi mit nejaky duvod...

> >    Jak to ma byt u systemu libc bohuzel nevim.
> 
>  Myslim ze by to melo fungovat stejne.

   Ale locale v libc spis nefunguji nez funguji (dlouhodobe problemy
s LC_TIME a tridenim jenom co vim ja).

>                     Vlada Michl


--
                          ***  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