[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=-