Linux установить локаль all

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.

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:

. #en_SG ISO-8859-1 en_US.UTF-8 UTF-8 #en_US ISO-8859-1 .

Save the file, and generate the locale:

  • locale-gen also runs with every update of glibc . [1]
  • UTF-8 is recommended over other character sets. [2]

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 :

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

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 ~/.config/locale.conf ).

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

  • This can also allow keeping the logs in /var/log/ in English while using the local language in the user environment.
  • You can create a /etc/skel/.config/locale.conf file so that any new users added using useradd and the -m option will have ~/.config/locale.conf automatically generated.
Читайте также:  Linux for windows gui

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 :

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

Note: The LANG variable has to be unset first, otherwise locale.sh will not update the values from locale.conf . Only new and changed variables will be updated; variables removed from locale.conf will still be set in the session.

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.

  • 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

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.

Tip: Assume that you are an English user in Spain, and you want your programs to handle numbers and dates according to Spanish conventions, and only the messages should be in English. Then you could set the LANG variable to es_ES.UTF-8 and the LC_MESSAGES (user interface for message translation) variable to en_US.UTF-8 .

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:

LANG=en_AU.UTF-8 LANGUAGE=en_AU:en_GB:en

Note: Many applications do not name or alias their English locale as en or en_US , but instead make it the default locale, which is C . If in LANGUAGE a non-English locale is placed after English, e.g. LANGUAGE=en_US:en:es_ES , then applications may choose the secondary locale despite English strings being available.[3] The solution is to always explicitly place the C locale after English. E.g. LANGUAGE=en_US:en:C:es_ES .

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 ISO 8601 date format of «YYYY-MM-DD» use:

Читайте также:  Extracting exe files in linux

You can print the current timestamp using your locale date and time format with date +»%c» .

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=C.UTF-8 .

Note: Programs do not necessarily respect this variable to format the date. For example, date(1) uses its own parameters to do so, and Firefox stopped honouring LC_TIME with versions 57 to 84 (Bug 1429578).

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. If LC_ALL is set to C , it will also override LANGUAGE .

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 .

Note: LC_ALL=C.UTF-8 , unlike LC_ALL=C , does not override LANGUAGE . See glibc bug 16621 and gettext bug 62815.

Troubleshooting

My system is still using wrong language

It is possible that the environment variables are redefined in other files than locale.conf . See Environment variables#Defining variables for details.

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-localerc (previously: ~/.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.

Using a custom locale causes problems

When installing a locale that is not officially supported (e.g., locale-en_xx AUR ), some problems can occur, like dead/compose keys not working in some applications or applications reporting missing locales. After installing a custom locale, manual intervention is required to resolve these problems. There are two approaches (replace en_XX.UTF-8 with the identifier of your custom locale):

Set LC_CTYPE

Set LC_CTYPE to an officially supported locale (like en_US.UTF-8 ), e.g.:

LANG=en_XX.UTF-8 LC_CTYPE=en_US.UTF-8

Modify the Xlib database

Modify the Xlib database by adding the following:

/usr/share/X11/locale/locale.dir
en_US.UTF-8/XLC_LOCALE en_XX.UTF-8 en_US.UTF-8/XLC_LOCALE: en_XX.UTF-8
/usr/share/X11/locale/compose.dir
en_US.UTF-8/Compose en_XX.UTF-8 en_US.UTF-8/Compose: en_XX.UTF-8

See also

Источник

Читайте также:  Пауза в скриптах linux

Как изменить или установить системные локали в Linux

Локаль — это набор переменных окружения, который определяет настройки языка, страны и символов (или любые другие специальные варианты) для ваших приложений и сеанса оболочки в системе Linux. Эти переменные окружения используются системными библиотеками и языковыми приложениями в системе.

Язык влияет на такие моменты, как формат времени / даты, первый день недели, цифры, валюта и многие другие значения, отформатированные в соответствии с языком или регионом / страной, установленной в системе Linux.

В этой статье мы покажем, как просмотреть установленный в данный момент язык системы и как установить локаль системы в Linux.

Как просмотреть системную локаль в Linux

Чтобы просмотреть информацию о текущей установленной локали, используйте утилиту locale или localectl.

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

Вы можете просмотреть дополнительную информацию о переменной окружения, например LC_TIME, которая хранит формат времени и даты.

$ locale -k LC_TIME abday="Вс;Пн;Вт;Ср;Чт;Пт;Сб" day="Воскресенье;Понедельник;Вторник;Среда;Четверг;Пятница;Суббота" abmon="янв;фев;мар;апр;мая;июн;июл;авг;сен;окт;ноя;дек" mon="января;февраля;марта;апреля;мая;июня;июля;августа;сентября;октября;ноября;декабря" am_pm=";" d_t_fmt="%a %d %b %Y %T" d_fmt="%d.%m.%Y" t_fmt="%T" t_fmt_ampm="" era= era_year="" era_d_fmt="" alt_digits= era_d_t_fmt="" era_t_fmt="" time-era-num-entries=0 time-era-entries="" week-ndays=7 week-1stday=19971130 week-1stweek=1 first_weekday=2 first_workday=2 cal_direction=1 timezone="" date_fmt="%a %b %e %H:%M:%S %Z %Y" time-codeset="UTF-8" alt_mon="Январь;Февраль;Март;Апрель;Май;Июнь;Июль;Август;Сентябрь;Октябрь;Ноябрь;Декабрь" ab_alt_mon="янв;фев;мар;апр;май;июн;июл;авг;сен;окт;ноя;дек"

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

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

Как установить новую системную локаль в Linux

Если вы хотите изменить или установить локальную систему, используйте программу update-locale. Переменная LANG позволяет вам установить локаль для всей системы.

Следующая команда устанавливает LANG в en_IN.UTF-8 и удаляет определения для LANGUAGE:

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

Чтобы настроить определенный параметр локали, отредактируйте соответствующую переменную. Например:

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

Глобальные настройки локали можно найти в следующих файлах:

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

Чтобы установить глобальную локаль для одного пользователя, вы можете просто открыть файл ~/.bash_profile и добавить следующие строки:

LANG="ru_RU.utf8" export LANG

Для получения дополнительной информации, «курим» man’ы locale, update-locale и localectl.

$ man locale $ man update-locale $ man localectl

На этом все! В этой короткой статье мы узнали, как просматривать и устанавливать локаль системы в Linux.

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:
CC Attribution-Noncommercial-Share Alike 4.0 International

Источник

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