UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

206 lines (132 loc) 17.3 kB
[Локали](https://en.wikipedia.org/wiki/ru:%D0%9B%D0%BE%D0%BA%D0%B0%D0%BB%D1%8C "wikipedia:ru:Локаль") определяют язык, который использует система, а также региональные особенности, такие как денежные знаки, формат чисел, даты и времени и наборы символов. ## Contents * [1 Генерирование локалей](#.D0.93.D0.B5.D0.BD.D0.B5.D1.80.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BB.D0.BE.D0.BA.D0.B0.D0.BB.D0.B5.D0.B9) * [2 Установка локали](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_.D0.BB.D0.BE.D0.BA.D0.B0.D0.BB.D0.B8) * [3 Дополнительно](#.D0.94.D0.BE.D0.BF.D0.BE.D0.BB.D0.BD.D0.B8.D1.82.D0.B5.D0.BB.D1.8C.D0.BD.D0.BE) * [4 Переменные окружения](#.D0.9F.D0.B5.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D0.BD.D1.8B.D0.B5_.D0.BE.D0.BA.D1.80.D1.83.D0.B6.D0.B5.D0.BD.D0.B8.D1.8F) * [4.1 LANG: локаль по умолчанию](#LANG:_.D0.BB.D0.BE.D0.BA.D0.B0.D0.BB.D1.8C_.D0.BF.D0.BE_.D1.83.D0.BC.D0.BE.D0.BB.D1.87.D0.B0.D0.BD.D0.B8.D1.8E) * [4.2 LANGUAGE: запасные локали](#LANGUAGE:_.D0.B7.D0.B0.D0.BF.D0.B0.D1.81.D0.BD.D1.8B.D0.B5_.D0.BB.D0.BE.D0.BA.D0.B0.D0.BB.D0.B8) * [4.3 LC_TIME: формат даты и времени](#LC_TIME:_.D1.84.D0.BE.D1.80.D0.BC.D0.B0.D1.82_.D0.B4.D0.B0.D1.82.D1.8B_.D0.B8_.D0.B2.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D0.B8) * [4.4 LC_COLLATE: порядок сортировки](#LC_COLLATE:_.D0.BF.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D1.81.D0.BE.D1.80.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.BA.D0.B8) * [5 LC_ALL](#LC_ALL) * [6 Советы и рекомендации](#.D0.A1.D0.BE.D0.B2.D0.B5.D1.82.D1.8B_.D0.B8_.D1.80.D0.B5.D0.BA.D0.BE.D0.BC.D0.B5.D0.BD.D0.B4.D0.B0.D1.86.D0.B8.D0.B8) * [6.1 Запуск приложения с другой локалью в терминале](#.D0.97.D0.B0.D0.BF.D1.83.D1.81.D0.BA_.D0.BF.D1.80.D0.B8.D0.BB.D0.BE.D0.B6.D0.B5.D0.BD.D0.B8.D1.8F_.D1.81_.D0.B4.D1.80.D1.83.D0.B3.D0.BE.D0.B9_.D0.BB.D0.BE.D0.BA.D0.B0.D0.BB.D1.8C.D1.8E_.D0.B2_.D1.82.D0.B5.D1.80.D0.BC.D0.B8.D0.BD.D0.B0.D0.BB.D0.B5) * [6.2 Запуск приложения с другой локалью из меню](#.D0.97.D0.B0.D0.BF.D1.83.D1.81.D0.BA_.D0.BF.D1.80.D0.B8.D0.BB.D0.BE.D0.B6.D0.B5.D0.BD.D0.B8.D1.8F_.D1.81_.D0.B4.D1.80.D1.83.D0.B3.D0.BE.D0.B9_.D0.BB.D0.BE.D0.BA.D0.B0.D0.BB.D1.8C.D1.8E_.D0.B8.D0.B7_.D0.BC.D0.B5.D0.BD.D1.8E) * [7 Решение проблем](#.D0.A0.D0.B5.D1.88.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BF.D1.80.D0.BE.D0.B1.D0.BB.D0.B5.D0.BC) * [7.1 Эмулятор терминала не поддерживает UTF-8](#.D0.AD.D0.BC.D1.83.D0.BB.D1.8F.D1.82.D0.BE.D1.80_.D1.82.D0.B5.D1.80.D0.BC.D0.B8.D0.BD.D0.B0.D0.BB.D0.B0_.D0.BD.D0.B5_.D0.BF.D0.BE.D0.B4.D0.B4.D0.B5.D1.80.D0.B6.D0.B8.D0.B2.D0.B0.D0.B5.D1.82_UTF-8) * [7.1.1 gnome-terminal или rxvt-unicode не поддерживают UTF-8](#gnome-terminal_.D0.B8.D0.BB.D0.B8_rxvt-unicode_.D0.BD.D0.B5_.D0.BF.D0.BE.D0.B4.D0.B4.D0.B5.D1.80.D0.B6.D0.B8.D0.B2.D0.B0.D1.8E.D1.82_UTF-8) * [7.2 Моя система использует неверный язык](#.D0.9C.D0.BE.D1.8F_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC.D0.B0_.D0.B8.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D1.83.D0.B5.D1.82_.D0.BD.D0.B5.D0.B2.D0.B5.D1.80.D0.BD.D1.8B.D0.B9_.D1.8F.D0.B7.D1.8B.D0.BA) * [8 Смотрите также](#.D0.A1.D0.BC.D0.BE.D1.82.D1.80.D0.B8.D1.82.D0.B5_.D1.82.D0.B0.D0.BA.D0.B6.D0.B5) ## Генерирование локалей Перед тем, как локаль сможет быть использована в системе, она должна быть сгенерирована. Чтобы вывести список всех доступных и сгенерированных локалей, выполните: ``` $ locale -a ``` Локали, которые вы можете сгенерировать перечислены в файле `/etc/locale.gen`: их имена заданы в формате `[язык][_ТЕРРИТОРИЯ][.НАБОР_СИМВОЛОВ][@модификатор]`. Чтобы сгенерировать локаль, первым делом раскомментируйте соответствующую строку в файле (а для удаления наоборот, закомментируйте); вы можете раскомментировать несколько локалей, в зависимости от ваших потребностей. Например, для русской локали раскомментируйте `ru_RU.UTF-8 UTF-8`. После сохранения файла сгенерируйте выбранные локали командой: ``` # locale-gen ``` **Примечание:** `locale-gen` также запускается каждый раз при обновлении [glibc](https://www.archlinux.org/packages/?name=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-странице](/index.php/Man_page_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Man page (Русский)") `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`. Смотрите [#Переменные окружения](#.D0.9F.D0.B5.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D0.BD.D1.8B.D0.B5_.D0.BE.D0.BA.D1.80.D1.83.D0.B6.D0.B5.D0.BD.D0.B8.D1.8F), [man-страницу](/index.php/Man_page_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Man page (Русский)") `locale.conf (5)` и связанные страницы для получения подробной информации. После внесения изменений в файлы `locale.conf`, они вступят в силу после перезагрузки системы, и для отдельных сеансов пользователей — при входе. Чтобы принудительно обновить локаль в текущем окружении без перезагрузки, выполните: ``` $ source /etc/profile.d/locale.sh ``` ## Дополнительно Переменные окружения настроек локали могут также быть установлены обычным способом, как указано на странице [переменные окружения](/index.php/%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BE%D0%BA%D1%80%D1%83%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F "Переменные окружения"). Например, чтобы проверить, как работает конкретное приложение с какой-нибудь локалью, вы можете запустить его следующим образом: ``` $ LANG="en_AU.UTF-8" ./my_application.sh ``` ## Переменные окружения Файлы `locale.conf` могут содержать следующие переменные окружения: * [LANG](#LANG:_.D0.BB.D0.BE.D0.BA.D0.B0.D0.BB.D1.8C_.D0.BF.D0.BE_.D1.83.D0.BC.D0.BE.D0.BB.D1.87.D0.B0.D0.BD.D0.B8.D1.8E) * [LANGUAGE](#LANGUAGE:_.D0.B7.D0.B0.D0.BF.D0.B0.D1.81.D0.BD.D1.8B.D0.B5_.D0.BB.D0.BE.D0.BA.D0.B0.D0.BB.D0.B8) * `LC_CTYPE` * `LC_NUMERIC` * [LC_TIME](#LC_TIME:_.D1.84.D0.BE.D1.80.D0.BC.D0.B0.D1.82_.D0.B4.D0.B0.D1.82.D1.8B_.D0.B8_.D0.B2.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D0.B8) * [LC_COLLATE](#LC_COLLATE:_.D0.BF.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D1.81.D0.BE.D1.80.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.BA.D0.B8) * `LC_MONETARY` * `LC_MESSAGES` * `LC_PAPER` * `LC_NAME` * `LC_ADDRESS` * `LC_TELEPHONE` * `LC_MEASUREMENT` * `LC_IDENTIFICATION` ### LANG: локаль по умолчанию Локаль, установленная в этой переменной используется в качестве значения для всех остальных `LC_*`-переменных, которые не установлены явно. ### LANGUAGE: запасные локали Программы, использующие gettext для перевода, учитывают также переменную `LANGUAGE` в дополнение к стандартным переменным. Это позволяет пользователям установить [список](http://www.gnu.org/software/gettext/manual/gettext.html#The-LANGUAGE-variable) локалей, которые будут использоваться в указанном порядке для поиска перевода. Если перевод для более предпочтительной локали (которая идет первее в списке) недоступен, будет произведена попытка получить перевод для следующей, и так далее. Например, пользователь из Австралии может предпочесть британский вариант перевода американскому: `locale.conf` ``` LANG=en_AU LANGUAGE=en_AU:en_GB:en ``` ### LC_TIME: формат даты и времени Например, если переменная `LC_TIME` имеет значение `en_US.UTF-8`, будет использован формат даты `ММ/ДД/ГГГГ`. Если вы хотите использовать формат [ISO 8601](https://en.wikipedia.org/wiki/ru:ISO_8601 "wikipedia:ru: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](http://superuser.com/a/448294/175967). Чтобы избежать возможных проблем, в Arch переменная установлена как `LC_COLLATE=C` в `/etc/profile`, однако этот метод сейчас устарел. ## LC_ALL Переменная `LC_ALL` переопределяет своим значением все `LC_*`-переменные, включая `LANG`, независимо от того, установлены они или нет. Переменная `LC_ALL` — единственная из всех `LC_`-переменных, которую **нельзя** установить в `/etc/locale.conf`: она предназначена только в целях проверки при решении проблем. ## Советы и рекомендации ### Запуск приложения с другой локалью в терминале Например, чтобы запустить программу *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](/index.php/Mlterm "Mlterm") * [rxvt-unicode (Русский)](/index.php/Rxvt-unicode_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Rxvt-unicode (Русский)") * [st](/index.php/St "St") * [эмуляторы на основе VTE](/index.php/List_of_applications/Utilities_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)#.D0.9D.D0.B0_.D0.BE.D1.81.D0.BD.D0.BE.D0.B2.D0.B5_VTE "List of applications/Utilities (Русский)") * [xterm](/index.php/Xterm_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Xterm (Русский)") — необходимо запускать с опцией `-u8`. Также вы можете запускать *uxterm*, который предоставляется пакетом [xterm](https://www.archlinux.org/packages/?name=xterm). #### gnome-terminal или rxvt-unicode не поддерживают UTF-8 Чтобы заработала поддержка UTF-8 в этих приложениях, необходимо запускать их с локалью, в которой установлена кодировка UTF-8, например `ru_RU.UTF-8`. Включите эту локаль в системе, установите ее как системную локаль по умолчанию в соответствиями с инструкциями в предыдущих разделах и перезагрузите компьютер. ### Моя система использует неверный язык Возможно, некоторые переменные окружения из `locale.conf` были переопределены каким-то другим файлом, например `~/.pam_environment`, который используется в GNOME. Подробнее смотрите на странице [Переменные окружения#Установка переменных](/index.php/%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BE%D0%BA%D1%80%D1%83%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_.D0.BF.D0.B5.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D0.BD.D1.8B.D1.85 "Переменные окружения"). ## Смотрите также * [Руководство по локализации Gentoo Linux](http://www.gentoo.org/doc/en/guide-localization.xml) * [Статья о локалях на Gentoo Wiki](http://www.gentoo-wiki.info/Locales) * [Интерактивная проверка сортировки от ICU](http://demo.icu-project.org/icu-bin/locexp?_=en_US&x=col) * [Инициатива Free Standards Group создания открытого стандарта интернационализации](http://www.openi18n.org/) * [О локалях в *The Single UNIX Specification*](http://pubs.opengroup.org/onlinepubs/007908799/xbd/locale.html) от The Open Group * [Переменные окружения для настройки локали](https://help.ubuntu.com/community/EnvironmentVariables#Locale_setting_variables) на Ubuntu Help.