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