Locale (Русский)

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

Состояние перевода: На этой странице представлен перевод статьи Locale. Дата последней синхронизации: 2022-04-03. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

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

Имена локалей обычно имеют вид [язык][_ТЕРРИТОРИЯ][.НАБОР_СИМВОЛОВ][@модификатор], где язык это код языка 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: локаль по умолчанию

Локаль, установленная в этой переменной используется в качестве значения для всех остальных -переменных, которые не установлены явно.

Совет: Например, вы англоговорящий пользователь в Испании и вы хотите, чтобы приложение обрабатывало числа и даты согласно стандартам Испании, но тексты были на английском. Тогда вы можете установить переменную 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:

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

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

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

Возможно, некоторые переменные окружения из . Подробнее смотрите на странице Переменные окружения#Установка переменных.

Если вы используете окружение рабочего стола, такое как GNOME, его настройки могут перекрывать .

KDE Plasma также позволяет изменить язык интерфейса через свои настройки. Если он всё равно использует язык по умолчанию после изменения, удаление файла ~/.config/plasma-localerc (ранее ) должно помочь.

Если вы используете экранный менеджер вместе с , смотрите Display manager (Русский)#Установка языка.

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

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

gollark: Are you sure you don't want helloboi.osmarks.net or something?
gollark: I can make the dynamic DNS logic update it if you give me some kind of freedns access token.
gollark: Ugh, *bee* that?
gollark: IPv6 addressesessesssees have 4 (four) times the length of A records.
gollark: Yes, but AAAA is for actual IP addresses. Set up CNAME pointing to helloboi.osmarks.net.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.