[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ru_* locale major update.
>> Действительно, LC_ALL "сильнее" чем LANG. То есть приоритеты
>> расставлены так :
>>
>> 1) LC_CATEGORY - конкретная категория (если есть)
>> 2) LC_ALL
>> 3) LANG
>>
>на самом деле так:
>
> LANGUAGE
> LC_ALL
> LC_*
> LANG
Ну, не надо смешивать мух и котлет :-)
Это совершенно разные механизмы : есть механизм POSIX locale
и есть механизм messages NLS (Native Language Support).
POSIX *пытается* определить язык сообщений через категорию
LC_MESSAGES (бывшая LC_RESPONCE) но становится в
этом месте крайне невнятным. Поэтому принято считать, что
в POSIX механизм messages NLS *не определен*.
Реальных же de-facto механизма messages NLS есть два :
- msgcat (который с .cat)
- gettext (который с .po)
Нередко они даже сосуществуют в одной системе.
Дак вот, msgcat управляется категорией LC_MESSAGES
а если нету -- 'наследует' переменную LANG.
А gettext управляется переменной LANGUAGE и НЕ ИМЕЕТ
пересечения с механизмом POSIX locale вообще. И
соответственно, не управляется через LC_MESSAGES и LANG.
Если я не прав, меня поправят. :-)
Собственно, я писал про это :
http://www.sensi.org/~alec/locale/locale_n.html
>важно, что LC_ALL перебивает LC_*. если пользователь предполагает,
>что паковальщики не установили LC_ALL (что он вправе предполагать), у
>него может крыша съехать.
Дело в том, что POSIX умалчивает случай одновременной установки
переменных LC_ALL *и* конкретной LC_CATEGORY в случае
вызова setlocale(LC_ALL,""). Принято считать, что указание конкретной
категории "сильнее" чем LC_ALL, но не факт. Или у меня стандарт
старый.
> 1) Задавать точное ДЛИННОЕ POSIX значение LANG
>
> Насколько я понял, именно по этому пути идет GNU.
>
>в ГНУ предпочитают ll_CC. именно поэтому было ru_RU и ru_SU.
Это уже победили. Пока ru_RU.KOI8-R идет как исключение, но я
думаю украинцы продавят свой uk_UA.KOI8-U а там и пойдет
помаленьку...
> Вот пусть RedHat c ними и извращается. :-)
>вот это нехорошая мысль.
>
Да уж. Смалодушничал. :-) Идти, дак до конца ! :-)
--
-=AV=-