Nazvy locales u glibc (nejen ceskych) a lokalizace vs. X

Zdenek Kabelac kabi na fi.muni.cz
Úterý Listopad 3 16:53:35 CET 1998


Petr Kolar wrote:
> 
> Tento dopis jsem mel zahrabany mezi rozepsanymi, takze jej posilam se
> znacnym zpozdenim:
> 
> Vladimir Michl <michlv na risc.upol.cz> wrote:

>> .... 

> >  Svuj test jsem cerpal prave z pristevku Zdenka Kabelace. Problem je ten,
> > ze v X11/Xlocale.h se pri nadefinovanem makru X_LOCALE, nadefinuje makro
> >
> > #define setlocale _Xsetlocale
> >
> > ktere odstrani puvodni volani setlocale z glibc a misto nej se vola
> > funkce _Xsetlocale, ve ktere se uz glibc-ove setlocale nevola (strace
> > na priklad neregistruje zadny pristup do /usr/share/locale). To by pak
> > melo pusobit (a pusobi) problem s nastavenim prostredi glibc pro dotycny
> > jazyk. V prikladu je to videt pri tisku datumu.
> 
>    Ted jsem nejak mimo misu. K cemu se to X_LOCALE vlastne definuje?

No docasne to opravovalo chybu v glibc locales - ty mely svoje vlastni
UNICODE kodovani
a to si vubec nerozumelo se sekvencemi s X-su - existuje knihovna
libBrokenLocale
ktera tohle resi pro glibc2.0 - ve 2.1 uz by to snad melo byt zase OK.

On je problem ze ten X_LOCALE flag sice resi tento problem, ale pridava
radu dalsich,
ktere jsou snad jeste horsi - napr. binarni nekompatibilitu se systemy bez
nej.
Proto se od tohoto reseni ustoupilo i v Debianu.

Rozhodne ale doporucuji - pokud pisi X-ovy program - psat #include
<X11/Xlocale.h>
misto <locale.h> - tak je zajisteno, ze pokud se to bude prekladat v
prostredi
s -DX_LOCALE  tak se korektne zavola inicializacni funkce Xsetlocale
(ono je to pomerne kompilikovane, ale doufam ze tahle zkratka staci)

> > Ted jak se divam na priklad, tak jedna chybova hlaska je zavadejici:
> > I18N: Locale not supported by C library, locale unchanged
> > protoze ona je pravdiva pouze v pripade, kdyz neni definovano X_LOCALE.
> 
>    Mel jsem pocit, ze tato hlaska je dobra. Bohuzel ovsem neinformuje,
> JAKE locale neni zname.

Samozrejme to jake ma uzivatel nastavene :-) - tedy to co
se nakonec dostane v setlocale jako LC_ALL - na coz je tam funkce, kterou
jsme tu uz jednou probrali....


-- 
                      Good programmers know what to write.
                  Great ones know what to rewrite (and reuse).
   Zdenek Kabelac    http://www.fi.muni.cz/~kabi/   kabi na fi.muni.cz


Další informace o konferenci Linux