Locale (Русский)

From ArchWiki
Jump to: navigation, search

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

Локали определяют язык, который использует система, а также региональные особенности, такие как денежные знаки, формат чисел, даты и времени и наборы символов.

Генерирование локалей

Перед тем, как локаль сможет быть использована в системе, она должна быть сгенерирована. Чтобы вывести список всех доступных и сгенерированных локалей, выполните:

$ locale -a

Локали, которые вы можете сгенерировать перечислены в файле /etc/locale.gen: их имена заданы в формате [язык][_ТЕРРИТОРИЯ][.НАБОР_СИМВОЛОВ][@модификатор]. Чтобы сгенерировать локаль, первым делом раскомментируйте соответствующую строку в файле (а для удаления наоборот, закомментируйте); вы можете раскомментировать несколько локалей, в зависимости от ваших потребностей. Например, для русской локали раскомментируйте ru_RU.UTF-8 UTF-8. После сохранения файла сгенерируйте выбранные локали командой:

# locale-gen
Примечание: locale-gen также запускается каждый раз при обновлении glibc.

Установка локали

Чтобы отобразить текущую локаль и связанные с ней переменные окружения, наберите:

$ 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).
Совет: Во время установки системы, если вас устраивает вывод команды locale, вы можете просто сохранить его в файл командой locale > /etc/locale.conf (в сеансе arch-chroot).
  • Системная локаль может переопределяться в каждом пользовательском сеансе с помощью файла ~/.config/locale.conf (или, в общем случае, $XDG_CONFIG_HOME/locale.conf либо $HOME/.config/locale.conf).
Совет:
  • Это позволяет вести системные логи в /var/log на английском, при использовании местного языке в рабочей среде пользователя.
  • Вы можете создать файл /etc/skel/.config/locale.conf, тогда для всех новых пользователей, добавленных командой useradd с опцией -m сразу будет автоматически сгенерирован файл ~/.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: она предназначена только в целях проверки при решении проблем.

Настройка локалей

Tango-emblem-important.pngПравильность информации, представленной в этой статье или разделе, оспариваетсяTango-emblem-important.png

Причина: Изменения локалей будут сброшены после обновления glibc, так как соответствующие файлы не указаны в поле backup в файле PKGBUILD. Вместо этого, необходимо создавать новые локали. (обсуждение: Talk:Locale (Русский)#)

Все параметры локалей располагаются в текстовых файлах в каталоге /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:

gnome-terminal или rxvt-unicode не поддерживают UTF-8

Чтобы заработала поддержка UTF-8 в этих приложениях, необходимо запускать их с локалью, в которой установлена кодировка UTF-8, например ru_RU.UTF-8. Включите эту локаль в системе, установите ее как системную локаль по умолчанию в соответствиями с инструкциями в предыдущих разделах и перезагрузите компьютер.

Моя система использует неверный язык

Возможно, некоторые переменные окружения из locale.conf были переопределены каким-то другим файлом, например ~/.pam_environment, который используется в GNOME. Подробнее смотрите на странице Переменные окружения#Установка переменных.

Смотрите также