Linux: Смена Языка и Кодировки Системы — Locale

Локаль (locale или локализация) в Linux определяет какой язык и какой набор символов (кодировку), пользователь видит в терминале.

Прочитав эту статью вы поймете, как узнать и изменить язык и кодировку системы из командной строки в Linux.

Я покажу как проверить текущие настройки языка и кодировки и узнать список всех доступных локалей.

Вы узнаете, как временно сменить язык и кодировку для текущей сессии или установить их постоянно, как для отдельного пользователя, так и для всех пользователей (сменить системную локаль по умолчанию).

Дельный Совет: Узнайте как определить и изменить кодировку файла из командной строки в Linux! Лучшее решение для конвертации текстовых файлов между различными кодировками! Читать далее →

Настройки Языка и Кодировки

Выполните команду locale, чтобы получить информацию о текущем языковом окружении:

$ locale

Чтобы узнать список всех установленных языков и кодировок, выполните:

$ locale -a

Локаль задается в следующем формате:

<ЯЗЫК>_<ТЕРРИТОРИЯ>.<КОДИРОВКА>[@<МОДИФИКАТОРЫ>]

ЯЗЫК Код языка по стандарту ISO 639
ТЕРРИТОРИЯ Код страны по стандарту ISO 3166
КОДИРОВКА Набор символов или идентификатор кодировки текста, как ISO-8859-1 или UTF-8

Например, локаль для австралийского английского с кодировкой UTF-8 называется: en_AU.UTF-8

Добавить Новую Локаль

Новая локаль: Прежде чем локаль станет доступной для использования, ее необходимо установить (сгенерировать).

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

Ubuntu-16.04

Поддерживаемые релизы: Ubuntu-15.04, 15.10, 16.04, 16.10.

Список всех поддерживаемых (доступных для установки) локалей:

$ cat /etc/locale.gen

Найдите необходимую локаль, например:

$ grep de_DE.UTF-8 /etc/locale.gen
de_DE.UTF-8 UTF-8

Установите ее, выполнив:

$ sudo locale-gen de_DE.UTF-8

Теперь она должна появиться в списке установленных локалей:

$ locale -a | grep de_DE.utf8
de_DE.utf8

Ubuntu-14.04

Поддерживаемые релизы: Ubuntu-9.10, 10.04, 10.10, 11.04, 11.10, 12.04, 12.10, 13.04, 13.10, 14.04, 14.10.

Список всех поддерживаемых (доступных для установки) локалей:

$ cat /usr/share/i18n/SUPPORTED

Найдите необходимую локаль, например:

$ grep fr_FR.UTF-8 /usr/share/i18n/SUPPORTED
fr_FR.UTF-8 UTF-8

Установите ее, выполнив:

$ sudo locale-gen fr_FR.UTF-8

Теперь она должна появиться в списке установленных локалей:

$ locale -a | grep fr_FR.utf8
fr_FR.utf8

CentOS-7, CentOS-6

Список всех поддерживаемых (доступных для установки) локалей:

$ localedef --list-archive

Найдите необходимую локаль, например:

localedef --list-archive | grep hi_IN.utf8
hi_IN.utf8

Сменить Язык и Кодировку Временно

Настройки языка и кодировки определяются переменной LANG, значение которой вы можете увидеть если выполните echo $LANG.

Чтобы изменить язык и кодировку текущей сессии, необходимо просто переназначить эту переменную.

Ниже приведены примеры изменения локали для некоторых распространенный языков.

Установите значение переменной LANG, как показано на примерах, чтобы изменить язык и кодировку текущий сессии:

Установить английскую локаль:

$ LANG=en_US.utf8

Установить русскую локаль:

$ LANG=ru_RU.utf8

Установить французскую локаль:

$ LANG=fr_FR.iso-8859-15

Установить немецкую локаль:

$ LANG=de_DE.utf8

Установить индийскую локаль:

$ LANG=hi_IN.utf8

Сменить Язык и Кодировку Перманентно

Если вы не хотите руками менять язык и кодировку при каждом подключении — вы можете задать локаль на постоянной основе.

Для этого установите необходимое значение переменной LANG в пользовательском Bash профиле и нужный язык вместе с кодировкой будут автоматически подгружаться при каждом входе в систему.

Добавьте следующую строку в файл ~/.bashrc или ~/.profile, чтобы для текущего пользователя локаль en_US.utf8 стала локалью по умолчанию:

export LANG=en_US.utf8

Изменение вступит в силу при следующем входе в систему, но вы можете это ускорить, если выполните одну из приведенных ниже команд, в зависимости от того, в каком файле вы прописали экспорт переменной LANG:

$ source ~/.profile

— or —

$ source ~/.bashrc

Локаль Системы По Умолчанию

Дельный Совет: Создайте потрясающий ASCII баннер из командной строки в Linux и вставьте его в предупреждающее сообщение, которое будет появляться при подключении по SSH! Читать далее →

Выполните следующие действия для смены системной локали по умолчанию (для всех пользователей).

Ubuntu-16.04

Поддерживаемые релизы: Ubuntu-15.04, 15.10, 16.04, 16.10.

$ localectl set-locale LANG=en_US.utf8

Ubuntu-14.04

Поддерживаемые релизы: Ubuntu-9.10, 10.04, 10.10, 11.04, 11.10, 12.04, 12.10, 13.04, 13.10, 14.04, 14.10.

Откройте файл с настройками локали по умолчанию:

/etc/default/locale

Переопределите значение переменной LANG:

LANG="en_US.utf8"

CentOS-7

$ localectl set-locale LANG=en_US.utf8

CentOS-6

Откройте файл с настройками локали по умолчанию:

/etc/sysconfig/i18n

Переопределите значение переменной LANG:

LANG="en_US.utf8"

Необходима перезагрузка: Изменения системных настроек вступит в силу только после перезагрузки.