Linux change locale utf 8

Содержание
  1. Linux: Define Locale and Language Settings
  2. Locale and Language Settings
  3. Add New Locale
  4. Ubuntu-18.04
  5. Ubuntu-14.04
  6. CentOS-7, CentOS-6
  7. Set Locale for the Current Session
  8. Define Locale and Language Permanently
  9. Set Default System Locale
  10. Ubuntu-18.04
  11. Ubuntu-14.04
  12. CentOS-7
  13. CentOS-6
  14. Locale
  15. Contents
  16. Generating locales
  17. Setting the locale
  18. Setting the system locale
  19. Overriding system locale per user session
  20. Make locale changes immediate
  21. Other uses
  22. Variables
  23. LANG: default locale
  24. LANGUAGE: fallback locales
  25. LC_TIME: date and time format
  26. LC_COLLATE: collation
  27. LC_ALL: troubleshooting
  28. Troubleshooting
  29. My terminal does not support UTF-8
  30. Gnome-terminal or rxvt-unicode
  31. My system is still using wrong language
  32. Как сменить locale в Debian или пишем кириллицей в консоли linux
  33. Locale (Русский)
  34. Contents
  35. Генерирование локалей
  36. Установка локали
  37. Установка системной локали
  38. Переопределение системной локали в пользовательском сеансе
  39. Немедленное применение изменений локали
  40. Дополнительно
  41. Переменные окружения
  42. LANG: локаль по умолчанию
  43. LANGUAGE: запасные локали
  44. LC_TIME: формат даты и времени
  45. LC_COLLATE: порядок сортировки
  46. LC_ALL: решение проблем
  47. Советы и рекомендации
  48. Запуск приложения с другой локалью в терминале
  49. Запуск приложения с другой локалью из меню
  50. Решение проблем
  51. Эмулятор терминала не поддерживает UTF-8
  52. gnome-terminal или rxvt-unicode не поддерживают UTF-8
  53. Моя система использует неверный язык

Linux: Define Locale and Language Settings

Locales are used in Linux to define which language and character set (encoding) user see in the terminal.

From this article you will learn how to check and change the current locale and language settings from the command line in Linux.

I will show how to check the current locale and language settings and how to get the list of available locals.

You will also see how to set locale and language temporary for the current session only as well as permanently for a single user or for the all users (change default system locale).

Cool Tip: Determine and change a file’s character encoding from the command line in Linux! The best solution for converting text files between different charsets! Read more →

Locale and Language Settings

Execute locale command to get the information about the current locale and language settings:

To list all enabled locales, run:

Locale is defined in the following format:

LANGUAGE ISO 639 language code
TERRITORY ISO 3166 country code
CODESET Character set or encoding identifier, like ISO-8859-1 or UTF-8

e.g. Australian English with UTF-8 encoding is defined as: en_AU.UTF-8

Add New Locale

New locale: Before a locale can be enabled on the system, it must be generated.

If you didn’t find the desired language or encoding in the list of enabled locales, you can search for them in the list of all supported locales and install whatever you need.

Ubuntu-18.04

Supported releases: Ubuntu-15.04, 15.10, 16.04, 16.10, 18.04.

List the all supported (available for generation) locales:

Find the desired locale, for example:

Generate it with:

Now you should see it in the list of available locales:

Ubuntu-14.04

Supported releases: Ubuntu-9.10, 10.04, 10.10, 11.04, 11.10, 12.04, 12.10, 13.04, 13.10, 14.04, 14.10.

List the all supported (available for generation) locales:

Find the desired locale, for example:

Generate it with:

Now you should see it in the list of available locales:

CentOS-7, CentOS-6

List the all supported (available for generation) locales:

Find the desired locale, for example:

Generate it with:

Now you should see it in the list of available locales:

Set Locale for the Current Session

To set the required locale and language for the current session – it is just needed to redefine this variable.

Below you will find the examples of setting locales for some popular languages.

Set the environment variable LANG , as shown in the examples, to change a language and encoding for the current session:

Set the English locale:

Set the Russian locale:

Set the French locale:

Set the German locale:

Set the Hindi locale:

Define Locale and Language Permanently

For this you can set the required value of the LANG variable in a user’s bash profile and the needed locale and language settings will be automatically loaded upon the each session.

Put the following line to the

/.profile files, to change permanently the locale of the current user to en_US.utf8 :

By default, the modification will take effect after logout/login, but you can force it if you run one of the below commands, depending on in which file you have defined the LANG variable:

Set Default System Locale

Cool Tip: Create the awesome ASCII banners from the Linux command line and decorate your SSH warning messages! Read more →

Читайте также:  Почему нет com портов windows

Perform the following steps to permanently change the system locale (for the all users).

Ubuntu-18.04

Supported releases: Ubuntu-15.04, 15.10, 16.04, 16.10, 18.04.

Ubuntu-14.04

Supported releases: Ubuntu-9.10, 10.04, 10.10, 11.04, 11.10, 12.04, 12.10, 13.04, 13.10, 14.04, 14.10.

Edit the file with default locale settings:

Set the LANG variable:

CentOS-7

CentOS-6

Edit the file with default locale settings:

Set the LANG variable:

Reboot is required: Note that the above settings will take effect after reboot only.

Источник

Locale

Locales are used by glibc and other locale-aware programs or libraries for rendering text, correctly displaying regional monetary values, time and date formats, alphabetic idiosyncrasies, and other locale-specific standards.

Contents

Generating locales

Locale names are typically of the form language[_territory][.codeset][@modifier] , where language is an ISO 639 language code, territory is an ISO 3166 country code, and codeset is a character set or encoding identifier like ISO-8859-1 or UTF-8. See setlocale(3) .

For a list of enabled locales, run:

Before a locale can be enabled on the system, it must be generated. This can be achieved by uncommenting applicable entries in /etc/locale.gen , and running locale-gen. Equivalently, commenting entries disables their respective locales. While making changes, consider any localisations required by other users on the system, as well as specific #Variables.

For example, uncomment en_US.UTF-8 UTF-8 for American-English:

Save the file, and generate the locale:

Setting the locale

To display the currently set locale and its related environmental settings, type:

The locale to be used, chosen among the previously generated ones, is set in locale.conf files. Each of these files must contain a new-line separated list of environment variable assignments, having the same format as output by locale.

To list available locales which have been previously generated, run:

Setting the system locale

To set the system locale, write the LANG variable to /etc/locale.conf , where en_US.UTF-8 belongs to the first column of an uncommented entry in /etc/locale.gen :

Overriding system locale per user session

The system-wide locale can be overridden in each user session by creating or editing $XDG_CONFIG_HOME/locale.conf (usually

The precedence of these locale.conf files is defined in /etc/profile.d/locale.sh .

/.config/locale.conf automatically generated.

Make locale changes immediate

Once system and user locale.conf files have been created or edited, their new values will take effect for new sessions at login. To have the current environment use the new settings unset LANG and source /etc/profile.d/locale.sh :

Other uses

Locale variables can also be defined with the standard methods as explained in Environment variables.

For example, in order to test or debug a particular application during development, it could be launched with something like:

Similarly, to set the locale for all processes run from the current shell (for example, during system installation):

Variables

locale.conf files support the following environment variables.

Full meaning of the above LC_* variables can be found on manpage locale(7) , whereas details of their definition are described on locale(5) .

LANG: default locale

The locale set for this variable will be used for all the LC_* variables that are not explicitly set.

LANGUAGE: fallback locales

Programs which use gettext for translations respect the LANGUAGE option in addition to the usual variables. This allows users to specify a list of locales that will be used in that order. If a translation for the preferred locale is unavailable, another from a similar locale will be used instead of the default. For example, an Australian user might want to fall back to British rather than US spelling:

LC_TIME: date and time format

If LC_TIME is set to en_US.UTF-8 , for example, the date format will be «MM/DD/YYYY». If wanting to use the the ISO 8601 date format of «YYYY-MM-DD» use:

glibc 2.29 fixed a bug, en_US.UTF-8 started showing in 12-hour format, as was intended. If wanting to use 24-hour format, use LC_TIME=en_GB.UTF-8 .

LC_COLLATE: collation

This variable governs the collation rules used for sorting and regular expressions.

Setting the value to C can for example make the ls command sort dotfiles first, followed by uppercase and lowercase filenames:

To get around potential issues, Arch used to set LC_COLLATE=C in /etc/profile , but this method is now deprecated.

LC_ALL: troubleshooting

The locale set for this variable will always override LANG and all the other LC_* variables, whether they are set or not.

Читайте также:  Загрузочная флешка для windows зверь

LC_ALL is the only LC_* variable which cannot be set in locale.conf files: it is meant to be used only for testing or troubleshooting purposes, for example in /etc/profile .

Troubleshooting

My terminal does not support UTF-8

The following lists some (not all) terminals that support UTF-8:

Gnome-terminal or rxvt-unicode

You need to launch these applications from a UTF-8 locale or they will drop UTF-8 support. Enable the en_US.UTF-8 locale (or your local UTF-8 alternative) per the instructions above and set it as the default locale, then reboot.

My system is still using wrong language

It is possible that the environment variables are redefined in other files than locale.conf , for example

If you are using a desktop environment, such as GNOME, its language settings may be overriding the settings in locale.conf .

KDE Plasma also allows to change the UI’s language through the system settings. If the desktop environment is still using the default language after the modification, deleting the file at

/.config/plasma-locale-settings.sh ) should resolve the issue.

If you are using a display manager in combination with accountsservice , follow the instructions in Display manager#Set language for user session.

LightDM will automatically use accountsservice to set a user’s locale if it is installed. Otherwise, LightDM stores the user session configuration in

/.dmrc . It is possible that an unwanted locale setting is retrieved from there as well.

Источник

Как сменить locale в Debian или пишем кириллицей в консоли linux

Я знаю что кириллица в логах Linux – это самый страшный грех для айтишника, но иногда это просто необходимость. Одна из таких необходимостей возникает при создании централизованного хранения log-файлов различных операционных систем. Microsoft всегда в своих log`ах применяет кириллицу и поэтому если мы хотим получать log-файлы и от Win-серверов, то стоит смириться, что в log`ах будет кирилица.

Для того, чтобы эти логи нормально отображались нам и нужно явно указать locale в Debian, Ubuntu или какой Linux-дистрибутив Вы используете.

Проблемы отображения кириллических символов в Linux не существует. Есть проблема у русской версии Windows. Весь мир и Linux в том числе, работает в кодировке UTF -8, когда русская версия Microsoft использует CP1251. Такая ситуация сложилось исторически благодаря компании «Парус», которая взяла на себя обязательства по локализации всех операционных систем Windows. Выбрали они почему-то кодировку CP1251, которая применяется до сих пор. Использование этой «неправильной» кодировки в наши дни обусловлено сохранением совместимости всех версий ОС.

Чтобы добавить кириллицу, чтобы Linux сервер нормально отображал русские буквы, нужно объяснить ему, что необходимо работать в той же кодировке, что и Windows.

Для того, чтобы управлять локалью в Linux, необходим пакет locales, который должен быть у Вас установлен. В большинстве случаев пакет locales уже будет у Вас установлен, поэтому для проформы просто проверяем этот факт.

Посмотреть установленную locale linux можно командой:

Для ручного указания кодировке в Linux Mint, Debian или ubuntu нужно отредактировать конфигурационный файл /etc/locale.gen :

Команду sudo не нужна, если Вы зашли как суперпользователь. Это относится к Linux Mint и Ubuntu, так как Debian ничего не знает о команде sudo.

В этом файле необходимо найти строчку и расскомментировать с той locale, которая Вам нужна. Для добавления кириллицы нужно раскомментировать строчки с UTF-8 или CP1251 .

  • если хотим указать, чтобы ОС работала в UTF -8, раскомментирум:
  • если хотим указать, чтобы ОС работала в CP1251, раскомментирум:

Стоит обратить внимание, что первые 2 символа (в нашем примере это ru) говорят нам о языке локализации (кириллица).

После этого переопределяем настройки locales командой:

Команда locale-gen позволяет запустить скрипт /etc/locale.gen и перечитывает все кодировки для консоли.

Чтобы увидеть кириллицу в консоли Linux, остается только перелогиниться.

Источник

Locale (Русский)

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

Contents

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

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

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

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

Читайте также:  Желтый экран монитора windows 10

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

После сохранения файла сгенерируйте выбранные локали командой:

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

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

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

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

Также можно использовать localectl(1) :

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

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

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

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

  • Системная локаль может переопределяться в каждом пользовательском сеансе с помощью файла

/.config/locale.conf (или, в общем случае, $XDG_CONFIG_HOME/locale.conf либо $HOME/.config/locale.conf ).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 на иврите:

Запуск приложения с другой локалью из меню

Скопируйте файл .desktop в домашний каталог пользователя:

И отредактируйте команду в опции Exec :

Решение проблем

Эмулятор терминала не поддерживает 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 были переопределены каким-то другим файлом, например

/.pam_environment , который используется в GNOME. Подробнее смотрите на странице Переменные окружения#Установка переменных.

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

KDE Plasma также позволяет изменить язык интерфейса через свои настройки. Если он всё равно использует язык по умолчанию после изменения, удаление файла

/.config/plasma-locale-settings.sh ) должно помочь.

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

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

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

Источник

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