Locale (Русский)
Локали определяют язык, который использует система, а также региональные особенности, такие как денежные знаки, формат чисел, даты и времени и наборы символов. Они используются glibc и некоторыми другими программами или библиотеками для рендеринга текста.
Генерирование локалей
Имена локалей обычно имеют вид [язык][_ТЕРРИТОРИЯ][.НАБОР_СИМВОЛОВ][@модификатор]
, где язык это код языка ISO 639, ТЕРРИТОРИЯ это код страны ISO 3166 и НАБОР_СИМВОЛОВ это кодировка вроде ISO-8859-1 или UTF-8. Смотрите setlocale(3).
Чтобы вывести список всех доступных и сгенерированных локалей, выполните:
$ locale -a
Перед тем, как локаль сможет быть использована в системе, она должна быть сгенерирована. Локали, которые вы можете сгенерировать перечислены в файле /etc/locale.gen
. Чтобы сгенерировать локаль, первым делом раскомментируйте соответствующую строку в файле (а для удаления наоборот, закомментируйте); вы можете раскомментировать несколько локалей, в зависимости от ваших потребностей.
Например, для русской локали раскомментируйте ru_RU.UTF-8 UTF-8
:
/etc/locale.gen
... #ro_RO ISO-8859-2 #ru_RU.KOI8-R KOI8-R ru_RU.UTF-8 UTF-8 #ru_RU ISO-8859-5 #ru_UA.UTF-8 UTF-8 ...
После сохранения файла сгенерируйте выбранные локали командой:
# locale-gen
Установка локали
Чтобы отобразить текущую локаль и связанные с ней переменные окружения, наберите:
$ locale
Используемая локаль, выбранная среди сгенерированных в системе, устанавливается в файлах , каждый из которых должен содержать список переменных окружения в том же формате, в каком их выводит команда locale.
Чтобы посмотреть список доступных ранее сгенерированных локалей, выполните:
$ localedef --list-archive
Также можно использовать :
$ localectl list-locales
Установка системной локали
- Системная локаль устанавливается с помощью переменной в файле
/etc/locale.conf
. Значением должен быть первый столбец из раскомментированной записи в/etc/locale.gen
:
Вы можете установить ее также при помощи localectl:
# localectl set-locale LANG=ru_RU.UTF-8
Подробнее смотрите #Переменные окружения and locale.conf(5).
Переопределение системной локали в пользовательском сеансе
- Системная локаль может переопределяться в каждом пользовательском сеансе с помощью файла (обычно ).
Немедленное применение изменений локали
После внесения изменений в файлы , они вступят в силу после перезагрузки системы, и для отдельных сеансов пользователей — при входе. Чтобы принудительно обновить локаль в текущем окружении без перезагрузки, выполните:
$ unset LANG $ source /etc/profile.d/locale.sh
Дополнительно
Переменные окружения настроек локали могут также быть установлены обычным способом, как указано на странице переменные окружения.
Например, чтобы проверить, как работает конкретное приложение с какой-нибудь локалью, вы можете запустить его следующим образом:
$ LANG=С ./my_application.sh
Аналогично, для установки локали всем процессам, запускаемом из текущей командной оболочки (например, в процессе установки системы):
$ export LANG=C
Переменные окружения
Файлы могут содержать следующие переменные окружения:
- LANG
- LANGUAGE
- LC_COLLATE
LC_MEASUREMENT
LC_PAPER
- LC_TIME
Полное объяснение этих переменных можно узнать в , детали описаны в .
LANG: локаль по умолчанию
Локаль, установленная в этой переменной используется в качестве значения для всех остальных -переменных, которые не установлены явно.
LANG
в значение es_ES.UTF-8
и переменную LC_MESSAGES
в en_US.UTF-8
.LANGUAGE: запасные локали
Программы, использующие для перевода, учитывают также переменную в дополнение к стандартным переменным. Это позволяет пользователям установить список локалей, которые будут использоваться в указанном порядке для поиска перевода. Если перевод для более предпочтительной локали (которая идет первее в списке) недоступен, будет произведена попытка получить перевод для следующей, и так далее. Например, пользователь из Австралии может предпочесть британский вариант перевода американскому:
LC_TIME: формат даты и времени
Например, если переменная имеет значение en_US.UTF-8
, будет использован формат даты . Если вы хотите использовать формат ISO 8601 (), установите:
LC_COLLATE: порядок сортировки
Эта переменная отвечает за правила определения сравнения наборов символов, которые используются для сортировки и регулярных выражений.
Установка значения , например, приведет к тому, что команда ls будет располагать файлы, имена которых начинаются с точки, первыми, за ними последуют имена, начинающиеся с цифры, затем с заглавной и, наконец, со строчной буквы:
/etc/locale.conf
LC_COLLATE=C
Смотрите также https://superuser.com/a/448294.
Чтобы избежать возможных проблем, в Arch переменная установлена как в , однако этот метод сейчас устарел.
LC_ALL: решение проблем
Переменная переопределяет своим значением все -переменные, включая , независимо от того, установлены они или нет.
Переменная — единственная из всех -переменных, которую нельзя установить в /etc/locale.conf
: она предназначена только в целях проверки при решении проблем.
Советы и рекомендации
Запуск приложения с другой локалью в терминале
Например, чтобы запустить программу abiword на иврите:
# env LANG=he_IL.UTF-8 abiword &
Запуск приложения с другой локалью из меню
Скопируйте файл .desktop в домашний каталог пользователя:
$ cp /usr/share/applications/abiword.desktop ~/.local/share/applications/
И отредактируйте команду в опции :
Решение проблем
Эмулятор терминала не поддерживает UTF-8
Небольшой список терминалов с поддержкой UTF-8:
- gnustep-terminal
- konsole
- mlterm
- rxvt-unicode (Русский)
- st
- эмуляторы на основе VTE
- xterm — необходимо запускать с опцией или с настройкой
xterm*utf8: 2
. Также вы можете запускать uxterm, который предоставляется пакетом .
gnome-terminal или rxvt-unicode не поддерживают UTF-8
Чтобы заработала поддержка UTF-8 в этих приложениях, необходимо запускать их с локалью, в которой установлена кодировка UTF-8, например . Включите эту локаль в системе, установите ее как системную локаль по умолчанию в соответствиями с инструкциями в предыдущих разделах и перезагрузите компьютер.
Моя система использует неверный язык
Возможно, некоторые переменные окружения из . Подробнее смотрите на странице Переменные окружения#Установка переменных.
Если вы используете окружение рабочего стола, такое как GNOME, его настройки могут перекрывать .
KDE Plasma также позволяет изменить язык интерфейса через свои настройки. Если он всё равно использует язык по умолчанию после изменения, удаление файла ~/.config/plasma-localerc
(ранее ) должно помочь.
Если вы используете экранный менеджер вместе с , смотрите Display manager (Русский)#Установка языка.
LightDM автоматически использует для выбора локали, если он установлен. В противном случае LightDM читает настройки сеанса из . Возможно, что нежелательные настройки локали прочитались оттуда.
Смотрите также
- Руководство по локализации Gentoo Linux
- http://wikigentoo.ksiezyc.pl/Locales.htm
- Интерактивная проверка сортировки от ICU
- Инициатива Free Standards Group создания открытого стандарта интернационализации
- О локалях в The Single UNIX Specification от The Open Group
- Переменные окружения для настройки локали на Ubuntu Help.