[Локали](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.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0_.D0.BB.D0.BE.D0.BA.D0.B0.D0.BB.D0.B5.D0.B9)
    *   [6.1 Установка первого дня недели](#.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.B2.D0.BE.D0.B3.D0.BE_.D0.B4.D0.BD.D1.8F_.D0.BD.D0.B5.D0.B4.D0.B5.D0.BB.D0.B8)
*   [7 Советы и рекомендации](#.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)
    *   [7.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)
    *   [7.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)
*   [8 Решение проблем](#.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)
    *   [8.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)
        *   [8.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)
    *   [8.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)
*   [9 Смотрите также](#.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`: она предназначена только в целях проверки при решении проблем.

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

Все параметры локалей располагаются в текстовых файлах в каталоге `/usr/share/i18n/locales/`, которые могут быть отредактированы пользователем при необходимости.

После редактирования файла параметров локали, не забудьте [заново сгенерировать](#.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) локаль в системе, чтобы изменения вступили в силу после перезагрузки.

### Установка первого дня недели

Во многих странах первый день недели — понедельник. Чтобы изменить первый день недели, добавьте следующие строки в файл настроек локали:

 `/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](/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.