| В начало → Linux не для идиотов → Локализация | 
|  |     | 
Широкое распространение UNIX-систем привело к необходимости введения системы локализации – поддержки предпочитаемых пользователем стандартов на запись даты и времени, формата чисел, языка сообщения программ, обозначений национальной валюты и так далее.
В Linux стандартом на методику локализации является спецификация i18n. Не вдаваясь в подробности, мы попытаемся получить некоторое представление о том как это выглядит для пользователя.
Как конечные пользователи, мы можем ознакомиться с текущими настройками своей локали используя команду locale:
$localeLANG=ru_RU.UTF-8 LC_CTYPE="ru_RU.UTF-8" LC_NUMERIC="ru_RU.UTF-8" LC_TIME="ru_RU.UTF-8" LC_COLLATE="ru_RU.UTF-8" LC_MONETARY="ru_RU.UTF-8" LC_MESSAGES=en_US LC_PAPER="ru_RU.UTF-8" LC_NAME="ru_RU.UTF-8" LC_ADDRESS="ru_RU.UTF-8" LC_TELEPHONE="ru_RU.UTF-8" LC_MEASUREMENT="ru_RU.UTF-8" LC_IDENTIFICATION="ru_RU.UTF-8"
На самом деле, программа locale в корректно настроенной системе просто выведет вам значение соответствующих переменных окружения. Каждая из этих переменных отвечает за свой собственный аспект локализации, перечислим наиболее важные:
LANG – локаль по умолчанию, ее значение для различных аспектов может быть перекрыто путем установки отдельных переменных в нужное
            вам значение
         
LC_CTYPE – отвечает за классификацию символов и различия в их регистре
         
LC_NUMERIC – отвечает за представление и форматирование чисел
         
LC_TIME – отвечает за формат даты
         
LC_COLLATE – определяет настройки сравнения строк и символов, влияет на сортировку
         
LC_MONETARY – отвечает за представление национальной валюты
         
LC_MESSAGES – определяет язык сообщений и интерфейса
         
В примере мы видим что локалью по умолчанию через переменную LANG выбрана локаль ru_RU.UTF-8 (русский язык, соответствие российским стандартам, кодировка символов UTF-8), а в качестве языка
            интерфейса назначен английский язык в варианте используемом в США. Фактически это означает что все программы будут иметь английский
            интерфейс, но показывать дату, валюту, десятичную точку и сортировать строки они должны так как это принято в России.
         
В отличие от мира Windows, где язык сообщений программы как правило жестко забит в ресурсах, а ресурсы включены в исполняемый
            файл, в UNIX и Linux сообщения как правило содержатся в отдельных файлах и программа загружает текстовые строки для сообщений
            интерфейса основываясь на значениях переменных LANG и LC_MESSAGES. Это дает возможность обеспечить работу пользователей из разных стран на привычных им языках, не прибегая к установке нескольких
            копий операционной системы или нескольких экземпляров программы, каждый для своего языка.
         
Системному администратору Linux достаточно обеспечить наличие файлов сообщений нужной локали для используемых пользователем программ, и правильно установить переменные окружения, после чего пользователь оказывается в привычной для него языковой обстановке и работать с привычными форматами даты, валюты, в привычных единицах измерения и т.д.
Более того – можно установить значение некоторых переменных окружения в нужные значения непосредственно перед запуском программы – и тогда эта программа примет будет использовать указанные настройки локали только для этого запуска, например:
$LC_MESSAGES=ru_RU.UTF-8 ls -l somethingls: невозможно получить доступ к something: Нет такого файла или каталога$LC_MESSAGES=en_US.UTF-8 ls -l somethingls: cannot access something: No such file or directory$LC_MESSAGES=fr_CA.UTF-8 ls -l somethingls: ne peut accéder something: Aucun fichier ou répertoire de ce type
Таким образом, в Linux-системе возможно обеспечить одновременную работу пользоваетелей в разных языковых окружениях, изменяя
            только изменение значений переменных окружения. В системах RedHat/Fedora общесистемные настройки локали хранятся в файле /etc/sysconfig/i18n, а пользователь может самостоятельно перекрыть их путем записи соответствующих значений в файле ~/.i18n:
         
$cat /etc/sysconfig/i18nLANG="ru_RU.UTF-8" SYSFONT="latarcyrheb-sun16"$cat /homed/viking/.i18nLC_MESSAGES="en_US"
В данном примере системная локаль ru_RU.UTF-8, но пользователь viking предпочитает работать в англоязычном интерфейсе, что и записал в своем персональном файле настроек локали.
|     | 
| В начало → Linux не для идиотов → Локализация |