Locale (Русский)
Локали определяют язык, который использует система, а также региональные особенности, такие как денежные знаки, формат чисел, даты и времени и наборы символов.
Contents
Генерирование локалей
Перед тем, как локаль сможет быть использована в системе, она должна быть сгенерирована. Чтобы вывести список всех доступных и сгенерированных локалей, выполните:
$ locale -a
Локали, которые вы можете сгенерировать перечислены в файле /etc/locale.gen
: их имена заданы в формате [язык][_ТЕРРИТОРИЯ][.НАБОР_СИМВОЛОВ][@модификатор]
. Чтобы сгенерировать локаль, первым делом раскомментируйте соответствующую строку в файле (а для удаления наоборот, закомментируйте); вы можете раскомментировать несколько локалей, в зависимости от ваших потребностей. Например, для русской локали раскомментируйте ru_RU.UTF-8 UTF-8
. После сохранения файла сгенерируйте выбранные локали командой:
# locale-gen
Установка локали
Чтобы отобразить текущую локаль и связанные с ней переменные окружения, наберите:
$ locale
Используемая локаль, выбранная среди сгенерированных в системе, устанавливается в файлах locale.conf
, каждый из которых должен содержать список переменных окружения, например:
locale.conf
LANG=en_AU.UTF-8 LC_COLLATE=C LC_TIME=en_DK.UTF-8
- Системная локаль устанавливается в файле
/etc/locale.conf
. Вы можете установить ее также при помощи localectl:
# localectl set-locale LANG=en_US.UTF-8
- Подробнее смотрите на man-странице
localectl(1)
.
- Системная локаль может переопределяться в каждом пользовательском сеансе с помощью файла
~/.config/locale.conf
(или, в общем случае,$XDG_CONFIG_HOME/locale.conf
либо$HOME/.config/locale.conf
).
Приоритет файлов locale.conf
определяется в /etc/profile.d/locale.sh
.
Смотрите #Переменные окружения, man-страницу locale.conf (5)
и связанные страницы для получения подробной информации.
После внесения изменений в файлы locale.conf
, они вступят в силу после перезагрузки системы, и для отдельных сеансов пользователей — при входе. Чтобы принудительно обновить локаль в текущем окружении без перезагрузки, выполните:
$ source /etc/profile.d/locale.sh
Дополнительно
Переменные окружения настроек локали могут также быть установлены обычным способом, как указано на странице переменные окружения.
Например, чтобы проверить, как работает конкретное приложение с какой-нибудь локалью, вы можете запустить его следующим образом:
$ LANG="en_AU.UTF-8" ./my_application.sh
Переменные окружения
Файлы locale.conf
могут содержать следующие переменные окружения:
- LANG
- LANGUAGE
-
LC_CTYPE
-
LC_NUMERIC
- LC_TIME
- LC_COLLATE
-
LC_MONETARY
-
LC_MESSAGES
-
LC_PAPER
-
LC_NAME
-
LC_ADDRESS
-
LC_TELEPHONE
-
LC_MEASUREMENT
-
LC_IDENTIFICATION
LANG: локаль по умолчанию
Локаль, установленная в этой переменной используется в качестве значения для всех остальных LC_*
-переменных, которые не установлены явно.
LANGUAGE: запасные локали
Программы, использующие gettext для перевода, учитывают также переменную LANGUAGE
в дополнение к стандартным переменным. Это позволяет пользователям установить список локалей, которые будут использоваться в указанном порядке для поиска перевода. Если перевод для более предпочтительной локали (которая идет первее в списке) недоступен, будет произведена попытка получить перевод для следующей, и так далее. Например, пользователь из Австралии может предпочесть британский вариант перевода американскому:
locale.conf
LANG=en_AU LANGUAGE=en_AU:en_GB:en
LC_TIME: формат даты и времени
Например, если переменная LC_TIME
имеет значение en_US.UTF-8
, будет использован формат даты ММ/ДД/ГГГГ
. Если вы хотите использовать формат ISO 8601 (ГГГГ-ММ-ДД
), установите:
locale.conf
LC_TIME=en_DK.UTF-8
LC_COLLATE: порядок сортировки
Эта переменная отвечает за правила определения сравнения наборов символов, которые используются для сортировки и регулярных выражений.
Установка значения LC_COLLATE=C
, например, приведет к тому, что команда ls будет располагать файлы, имена которых начинаются с точки, первыми, за ними последуют имена, начинающиеся с цифры, затем с заглавной и, наконец, со строчной буквы:
/etc/locale.conf
LC_COLLATE=C
Смотрите также http://superuser.com/a/448294/175967.
Чтобы избежать возможных проблем, в Arch переменная установлена как LC_COLLATE=C
в /etc/profile
, однако этот метод сейчас устарел.
LC_ALL
Переменная LC_ALL
переопределяет своим значением все LC_*
-переменные, включая LANG
, независимо от того, установлены они или нет.
Переменная LC_ALL
— единственная из всех LC_
-переменных, которую нельзя установить в /etc/locale.conf
: она предназначена только в целях проверки при решении проблем.
Настройка локалей
Все параметры локалей располагаются в текстовых файлах в каталоге /usr/share/i18n/locales/
, которые могут быть отредактированы пользователем при необходимости.
После редактирования файла параметров локали, не забудьте заново сгенерировать локаль в системе, чтобы изменения вступили в силу после перезагрузки.
Установка первого дня недели
Во многих странах первый день недели — понедельник. Чтобы изменить первый день недели, добавьте следующие строки в файл настроек локали:
/usr/share/i18n/locales/локаль
LC_TIME [...] week 7;19971130;5 first_weekday 2 first_workday 2
Советы и рекомендации
Запуск приложения с другой локалью в терминале
Например, чтобы запустить программу abiword на иврите:
# env LANG=he_IL.UTF-8 abiword &
Запуск приложения с другой локалью из меню
Скопируйте файл .desktop в домашний каталог пользователя:
$ cp /usr/share/applications/abiword.desktop ~/.local/share/applications/
И отредактируйте команду в опции Exec
:
~/.local/share/applications/abiword.desktop
Exec=env LANG=he_IL.UTF-8 abiword %U
Решение проблем
Эмулятор терминала не поддерживает UTF-8
Небольшой список терминалов с поддержкой UTF-8:
- gnustep-terminal
- konsole
- mlterm
- rxvt-unicode (Русский)
- st
- эмуляторы на основе VTE
- xterm — необходимо запускать с опцией
-u8
. Также вы можете запускать uxterm, который предоставляется пакетом xterm.
gnome-terminal или rxvt-unicode не поддерживают UTF-8
Чтобы заработала поддержка UTF-8 в этих приложениях, необходимо запускать их с локалью, в которой установлена кодировка UTF-8, например ru_RU.UTF-8
. Включите эту локаль в системе, установите ее как системную локаль по умолчанию в соответствиями с инструкциями в предыдущих разделах и перезагрузите компьютер.
Моя система использует неверный язык
Возможно, некоторые переменные окружения из locale.conf
были переопределены каким-то другим файлом, например ~/.pam_environment
, который используется в GNOME. Подробнее смотрите на странице Переменные окружения#Установка переменных.
Смотрите также
- Руководство по локализации Gentoo Linux
- Статья о локалях на Gentoo Wiki
- Интерактивная проверка сортировки от ICU
- Инициатива Free Standards Group создания открытого стандарта интернационализации
- О локалях в The Single UNIX Specification от The Open Group
- Переменные окружения для настройки локали на Ubuntu Help.