BASH Programming - Введение


Устаревшая процедура установки Locale


В RedHat Linux (как, вероятно, и во многих других дистрибутивах Linux), имеются фактически две базы

данных locale: одна для библиотеки C (libc), а другая - для X

библиотек. В идеальном случае должна иметься только одна база данных locale для всего.

Чтобы изменить значение locale по умолчанию, обычно достаточно установить системную переменную LANG. Например, как это делается в sh:

LANG=ru_SU export LANG

Вы можете проверить действие этой команды сразу же, если запустите команду date. Результатом должен быть вывод дня, недели и месяца на русском языке.

RedHat 5.x определяет KOI8-R locale как ru_SU. Более очевидное название ru_RU используется для locale, основанного на iso-8859-5 кодировки.

Иногда вы можете захотеть изменить только один аспект locale без изменения других. Например, вы можете захотеть (Бог знает почему) пользоваться ru_SU locale, но печатаемые числа должны будут соответствовать стандарту POSIX один. В подобных случаях имеется набор системных переменных, которые Вы можете задать, чтобы сконфигурировать соответствующие части locale. Например, в нашем случае это бы выглядело так:

LANG=ru_SU LC_NUMERIC=POSIX export LANG LC_NUMERIC

Подробнее см. locale(7).

Теперь давайте держаться поближе к специфике Linux. К сожалению, в Linux libc версии 5.3.12 (пример: дистрибутив RedHat 4.1), отсутствует русская locale. В данном случае ее надо скачать из Interneta (я, однако, не знаю точного адреса).

Чтобы проверить, для каких языков у вас есть locale, выполните 'locale -a'. Это выведет список всех locale из баз данных, доступных libc.

Что касается библиотек X, то они имеют свою собственную базу данных locale. В версии XFree86 3.3 уже имеется российская база данных locale. Я не уверен, есть ли она в предыдущей версии. В любом случае вы можете проверить это, изучив директорию /usr/lib/X11/locale/ (в большинстве систем). В моем случае уже есть подкаталоги, именованные koi8-r и даже iso8859-5.



Содержание раздела