В начало → Linux не для идиотов → Локализация |
Широкое распространение UNIX-систем привело к необходимости введения системы локализации – поддержки предпочитаемых пользователем стандартов на запись даты и времени, формата чисел, языка сообщения программ, обозначений национальной валюты и так далее.
В Linux стандартом на методику локализации является спецификация i18n. Не вдаваясь в подробности, мы попытаемся получить некоторое представление о том как это выглядит для пользователя.
Как конечные пользователи, мы можем ознакомиться с текущими настройками своей локали используя команду locale:
$
locale
LANG=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 something
ls: невозможно получить доступ к something: Нет такого файла или каталога$
LC_MESSAGES=en_US.UTF-8 ls -l something
ls: cannot access something: No such file or directory$
LC_MESSAGES=fr_CA.UTF-8 ls -l something
ls: ne peut accéder something: Aucun fichier ou répertoire de ce type
Таким образом, в Linux-системе возможно обеспечить одновременную работу пользоваетелей в разных языковых окружениях, изменяя
только изменение значений переменных окружения. В системах RedHat/Fedora общесистемные настройки локали хранятся в файле /etc/sysconfig/i18n
, а пользователь может самостоятельно перекрыть их путем записи соответствующих значений в файле ~/.i18n
:
$
cat /etc/sysconfig/i18n
LANG="ru_RU.UTF-8" SYSFONT="latarcyrheb-sun16"$
cat /homed/viking/.i18n
LC_MESSAGES="en_US"
В данном примере системная локаль ru_RU.UTF-8, но пользователь viking предпочитает работать в англоязычном интерфейсе, что и записал в своем персональном файле настроек локали.
В начало → Linux не для идиотов → Локализация |