[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Linux internationalization page
>> Дело в том, что setlocale(3) определена так :
>>
>> char * setlocale(int category, const char *locale)
>>
>> То есть, функция ВОЗВРАЩАЕТ указатель на string.
>
> А действительно - "C"?
>А не NULL?
Кстати, действительно NULL . Не посмотрел.
> И, к тому же, где нибудь оговаривается - какую строчку должна вернуть
>setlocale?
В POSIX :-) . А серьезно, у меня уже штук 5 разных man-ов setlocale.
> Почему это должно быть имя реального файла/директории, а не просто то,
>что мы вставили вторым аргументом?
>(У меня она, кстати, так и делает. Хотя я не уверен, что так должно быть
>и в POSIX)
Кстати, во FreeBSD 2.2 setlocale обманывается symlink-ом и вполне
счастлива.
$ ls -la /usr/share/locale/ru_RU.KOI8-R
lrwxrwxrwx 1 root bin 12 Aug 30 1998 ru_RU.KOI8-R -> ru_SU.KOI8-R
$./lc
We req = ru_RU.KOI8-R
We got = ru_RU.KOI8-R
Great! All OK.
$
В RedHat 5.2 (glibc 2.0.7) - НЕТ, она сначала лезет в locale.alias,
получает оттуда реальное имя, и его уже использует (и возвращает
из setlocale).
$ ls -la /usr/share/locale/ru_RU.KOI8-R/LC_CTYPE [ самодельный ]
-rw-r--r-- 1 root root 10424 Jul 8 19:55 LC_CTYPE
$ cat /usr/share/locale/locale.alias [ чисто для теста]
...
ru ru_RU.KOI8-R
....
$ ./lc
We req = ru
We got = ru_RU.KOI8-R
We can't set REQUIRED locale !
$
Других систем для тестирования под рукой нет. :-(
--
-=AV=-