Как установить locale ?

    Способ установки средств locale может довольно сильно различаться в операционных системах от разных производителей, особенно для старых реализаций POSIX до 1996 года и переходных реализациий.

    Как описано тут, структурно средства POSIX locale состоят из следующих компонентов :

  1. Набор библиотечных (libc) вызовов (locale API): setlocale(), isalpha(), toupper(), e.t.c.
  2. Переменные окружения, для управления средствами locale : LANG, LC_CTYPE. e.t.c.
  3. Утилита для получения информации о средствах locale : locale
  4. Исходные тексты описания locale : locale definitions, Charfcter Set Definitions File : /usr/share/i18n/*
  5. Утилита для изготовления (компиляции) объектов локализации : localedef
  6. Собственно объекты локализации (наборы данных locale) : /usr/share/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"


Last change : 21-04-2003