Способ установки средств locale может довольно сильно различаться в операционных системах от разных производителей, особенно для старых реализаций POSIX до 1996 года и переходных реализациий.
Как описано тут, структурно средства POSIX locale состоят из следующих компонентов :
Предположим, что библиотека libc на Вашей системе содержит все необходимые вызовы. Иначе придется поменять библиотеку (или систему). :-)
В стандарте POSIX.2 (Утилиты командной строки) определенны две утилиты - locale и localedef. Если система отвечает стандарту POSIX.2:1996, на вашей машине они имеются.
Утилита locale служит для получения различной информации о текущих значениях категорий locale, o всех установленных в системе возможных locale и о внутренних характеристиках различных категорий locale.
Имея утилиту locale можно проверить наличие необходимых "объектов локализации", а потом включить необходимое языковое окружение.
Ситуация чуть осложняется, если необходимые "объекты локализации" отсутствуют. К счастью, стандарт POSIX варианта 1996 г. сделан более переносимым, не зависящим от конкретной реализации и все действия пользователя не различаюся от системы к системе и их внутренняя реализация скрыта за утилитами POSIX.2.
Если в системе не предустановлено нужные нам "объекты локализации", они могут быть добавлены в систему с помощью утилиты localedef путем компиляции специальных (текстовых) файлов описания параметров : Файла Описания Набора Символов (Characher Set Definition File) и Файла Описания Локализации (locale definitions) . После этого они становится изветным системе и видимым по `locale -a`.
$ localedef -c -i ru_RU -f ISO_8859-5 ru_RU.ISO_8859-5 $ localedef -c -i ru_RU -f KOI8-R ru_RU.KOI8-R
Данные файлы в исходном (текстовом)
виде можно получить из коллекции ftp://dkuug.dk/i18n
или из комплекта исходных текстов библиотеки glibc 2.x (./localedata/*
).
Файлы Описания Локализации (locale definitions) сделаны независимыми от Charset-а, поэтому один и тот же файл ru_RU подойдет для "компиляции" locale : ru_RU.ISO-8859-5, ru_RU.KOI8-R, ru_RU.CP1251.
К сожалению, в некоторых системах (например в glibc) localedef изменяет имя Charset, поэтому после localedef каталог необходимо переименовать.
Еще один вариант - это просто скопировать недостающие файлы-"объекты локализации" в двоичном виде. Некоторые производители UNIX поставляют для своих систем продукт "Language Kit", который есть ни что иное, как комплект данных файлов. К сожалению, стандарт POSIX никак не определяет внутренний формат объектов локализации. Поэтому "Language Kit" одной системы (или даже версии) скорее всего не подойдет к другой системе.
Для расширения кругозора, можно ознакомится с примером реализации подсистемы locale в операционной системе Linux.
После выполнения необходимых установок, работоспособность locale можно проверить.
Содержание "Locale AS IT IS"