Set lang on linux

How to Change or Set System Locales in Linux

A locale is a set of environmental variables that defines the language, country, and character encoding settings (or any other special variant preferences) for your applications and shell session on a Linux system. These environmental variables are used by system libraries and locale-aware applications on the system.

Locale affects things such as the time/date format, the first day of the week, numbers, currency and many other values formatted in accordance with the language or region/country you set on a Linux system.

In this article, we will show how to view your currently installed system locale and how to set system’s locale in Linux.

How to View System Locale in Linux

To view information about the current installed locale, use the locale or localectl utility.

$ locale LANG=en_US.UTF-8 LANGUAGE=en_US LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL= $ localectl status System Locale: LANG=en_US.UTF-8 LANGUAGE=en_US VC Keymap: n/a X11 Layout: us X11 Model: pc105

You can view more information about an environmental variable, for example LC_TIME, which stores the time and date format.

$ locale -k LC_TIME abday="Sun;Mon;Tue;Wed;Thu;Fri;Sat" day="Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday" abmon="Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec" mon="January;February;March;April;May;June;July;August;September;October;November;December" am_pm="AM;PM" d_t_fmt="%a %d %b %Y %r %Z" d_fmt="%m/%d/%Y" t_fmt="%r" t_fmt_ampm="%I:%M:%S %p" era= era_year="" era_d_fmt="" alt_digits= era_d_t_fmt="" era_t_fmt="" time-era-num-entries=0 time-era-entries="S" week-ndays=7 week-1stday=19971130 week-1stweek=1 first_weekday=1 first_workday=2 cal_direction=1 timezone="" date_fmt="%a %b %e %H:%M:%S %Z %Y" time-codeset="UTF-8" alt_mon="January;February;March;April;May;June;July;August;September;October;November;December" ab_alt_mon="Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec"

To display a list of all available locales use the following command.

$ locale -a C C.UTF-8 en_US.utf8 POSIX

How to Set System Locale in Linux

If you want to change or set system local, use the update-locale program. The LANG variable allows you to set the locale for the entire system.

The following command sets LANG to en_IN.UTF-8 and removes definitions for LANGUAGE.

$ sudo update-locale LANG=LANG=en_IN.UTF-8 LANGUAGE OR $ sudo localectl set-locale LANG=en_IN.UTF-8

To configure a specific locale parameter, edit the appropriate variable. For instance.

$ sudo update-locale LC_TIME=en_IN.UTF-8 OR $ sudo localectl set-locale LC_TIME=en_IN.UTF-8

You can find global locale settings in the following files:

  • /etc/default/locale – on Ubuntu/Debian
  • /etc/locale.conf – on CentOS/RHEL
Читайте также:  Updating bios on linux

These files can also be edited manually using any of your favorite command line editors such as Vim or Nano, to configure your system locale.

To set a global locale for single user, you can simply open ~/.bash_profile file and add the following lines.

LANG="en_IN.utf8" export LANG

For more information, see the locale, update-locale and localectl man pages.

$ man locale $ man update-locale $ man localectl

That’s all! In this short article, we have explained how to view and set system local in Linux. If you have any questions, use the feedback form below to reach us.

Источник

Locale (Русский)

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

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

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

Имена локалей обычно имеют вид [язык][_ТЕРРИТОРИЯ][.НАБОР_СИМВОЛОВ][@модификатор] , где язык это код языка ISO 639, ТЕРРИТОРИЯ это код страны ISO 3166 и НАБОР_СИМВОЛОВ это кодировка вроде ISO-8859-1 или UTF-8. Смотрите setlocale(3) .

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

Перед тем, как локаль сможет быть использована в системе, она должна быть сгенерирована. Локали, которые вы можете сгенерировать перечислены в файле /etc/locale.gen . Чтобы сгенерировать локаль, первым делом раскомментируйте соответствующую строку в файле (а для удаления наоборот, закомментируйте); вы можете раскомментировать несколько локалей, в зависимости от ваших потребностей.

Например, для русской локали раскомментируйте ru_RU.UTF-8 UTF-8 :

. #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 также запускается каждый раз при обновлении glibc . [1]
  • UTF-8 предпочтительнее других кодировок. [2]

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

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

Используемая локаль, выбранная среди сгенерированных в системе, устанавливается в файлах locale.conf , каждый из которых должен содержать список переменных окружения в том же формате, в каком их выводит команда locale.

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

Установка системной локали

  • Системная локаль устанавливается с помощью переменной LANG в файле /etc/locale.conf . Значением должен быть первый столбец из раскомментированной записи в /etc/locale.gen :

Вы можете установить ее также при помощи localectl:

# localectl set-locale LANG=ru_RU.UTF-8 

Совет: Во время установки системы, если вас устраивает вывод команды locale, вы можете просто сохранить его в файл командой locale > /etc/locale.conf (в сеансе arch-chroot).

Читайте также:  Linux log file directory

Переопределение системной локали в пользовательском сеансе

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

Немедленное применение изменений локали

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

$ unset LANG $ source /etc/profile.d/locale.sh

Примечание: Переменную LANG нужно обязательно сбросить, иначе locale.sh не обновит значения из locale.conf . Будут обновлены только новые и изменённые переменные; те же, что были удалены из файла locale.conf , по-прежнему останутся в текущем сеансе.

Дополнительно

Переменные окружения настроек локали могут также быть установлены обычным способом, как указано на странице переменные окружения.

Например, чтобы проверить, как работает конкретное приложение с какой-нибудь локалью, вы можете запустить его следующим образом:

Аналогично, для установки локали всем процессам, запускаемом из текущей командной оболочки (например, в процессе установки системы):

Переменные окружения

Файлы locale.conf могут содержать следующие переменные окружения:

  • LANG
  • LANGUAGE
  • LC_ADDRESS
  • LC_COLLATE
  • LC_CTYPE
  • LC_IDENTIFICATION
  • LC_MEASUREMENT
  • LC_MESSAGES
  • LC_MONETARY
  • LC_NAME
  • LC_NUMERIC
  • LC_PAPER
  • LC_TELEPHONE
  • LC_TIME

Полное объяснение этих переменных можно узнать в locale(7) , детали описаны в locale(5) .

Примечание: При поиске значений, зависящих от локали, программы следуют определённому порядку приоритета.

LANG: локаль по умолчанию

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

Совет: Например, вы англоговорящий пользователь в Испании и вы хотите, чтобы приложение обрабатывало числа и даты согласно стандартам Испании, но тексты были на английском. Тогда вы можете установить переменную LANG в значение es_ES.UTF-8 и переменную LC_MESSAGES в en_US.UTF-8 .

LANGUAGE: запасные локали

Программы, использующие gettext для перевода, учитывают также переменную LANGUAGE в дополнение к стандартным переменным. Это позволяет пользователям установить список локалей, которые будут использоваться в указанном порядке для поиска перевода. Если перевод для более предпочтительной локали (которая идет первее в списке) недоступен, будет произведена попытка получить перевод для следующей, и так далее. Например, пользователь из Австралии может предпочесть британский вариант перевода американскому:

LANG=en_AU LANGUAGE=en_AU:en_GB:en

LC_TIME: формат даты и времени

Например, если переменная LC_TIME имеет значение en_US.UTF-8 , будет использован формат даты ММ/ДД/ГГГГ . Если вы хотите использовать формат ISO 8601 ( ГГГГ-ММ-ДД ), установите:

Примечание: Программы не всегда учитывают указанный здесь формат даты. Например, date(1) использует свои собственные параметры, а Firefox не учитывал LC_TIME в версиях 57-84 (Bug 1429578).

Читайте также:  Пакет make astra linux

LC_COLLATE: порядок сортировки

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

Установка значения LC_COLLATE=C , например, приведет к тому, что команда ls будет располагать файлы, имена которых начинаются с точки, первыми, за ними последуют имена, начинающиеся с цифры, затем с заглавной и, наконец, со строчной буквы:

Чтобы избежать возможных проблем, в 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
  • rxvt-unicode (Русский)
  • st
  • эмуляторы на основе VTE
  • xterm — необходимо запускать с опцией -u8 или с настройкой xterm*utf8: 2 . Также вы можете запускать uxterm, который предоставляется пакетом xterm .

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

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

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

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

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

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

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

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

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

  • Руководство по локализации Gentoo Linux
  • http://wikigentoo.ksiezyc.pl/Locales.htm [устаревшая ссылка 2023-05-06 ⓘ]
  • Интерактивная проверка сортировки от ICU
  • Инициатива Free Standards Group создания открытого стандарта интернационализации
  • О локалях в The Single UNIX Specification от The Open Group
  • Переменные окружения для настройки локали на Ubuntu Help.

Источник

Оцените статью
Adblock
detector