Настройки локали - это пользовательские настройки, относящиеся к вашей культуре.
Названия локалей
Во всех текущих версиях Unix, о которых я знаю (но не о некоторых антиквариатах), имена локалей следуют той же схеме:
- ISO 639-1 строчными двубуквенный код языка, или ISO 639-2 код языка три буквы , если язык не имеет два-буквенный код. Например,
en
для английского, de
для немецкого, ja
для японского, uk
для украинского, ber
для берберского, ...
- Для многих, но не для всех языков, подчеркивание,
_
за которым следует двухбуквенный код страны в соответствии с ISO 3166 . Таким образом: en_US
для американского английского, en_UK
для британского английского, fr_CA
канадского (квебекского) французского, de_DE
для немецкого из Германии, de_AT
для немецкого из Австрии, ja_JP
для японского (из Японии) и т. Д.
- Необязательно, точка с
.
последующим именем персонажа , кодирующей такими как UTF-8
, ISO-8859-1
, KOI8-U
, GB2312
, Big5
и т.д. С GNU LIBC по крайней мере (не знаю , насколько широко это), случай и пунктуация игнорируются при кодировании имен. Например, zh_CN.UTF-8
китайский (мандаринский) (упрощенный) кодируется в UTF-8, zh_CN
китайский - мандаринский код в GB2312, а zh_TW
тайваньский (традиционный) китайский - в Big5.
- По желанию, знак at,
@
сопровождаемый именем варианта. Значение вариантов зависит от локали. Например, во многих европейских странах есть @euro
вариант локали, где знак валюты - это евро, а кодировка - это символ, который включает этот символ (ISO 8859-15 или ISO 8859-16), в отличие от неукрашенного варианта со старым знаком валюты. Например, en_IE
(английский, Ирландия) использует кодировку latin1 (ISO 8859-1) и £ в качестве символа валюты, а en_IE@euro
кодировку latin9 (ISO 8859-15) и € в качестве символа валюты.
Кроме того, есть два имени локали, которые существуют во всех Unix-подобных системах: C
и POSIX
. Эти имена являются синонимами и означают computerese, то есть настройки по умолчанию, которые подходят для данных, которые анализируются компьютерной программой.
Настройки локали
POSIX определяет следующие категории локалей :
LC_CTYPE
: набор символов, используемый терминальными приложениями: данные классификации (какие символы являются буквами, пунктуацией, пробелами, недействительными и т. д.) и преобразование регистра. Текстовые утилиты обычно учитывают LC_CTYPE
границы символов.
LC_COLLATE
: порядок сортировки (т.е. сортировки). Этот параметр имеет очень ограниченное использование по нескольким причинам:
- Большинство языков имеют сложные правила, которые зависят от того, что сортируется (например, словарные слова и собственные имена могут не использовать один и тот же порядок) и не могут быть выражены с помощью
LC_COLLATE
.
- Есть несколько приложений, где правильный порядок сортировки имеет значение, которые выполняются программным обеспечением, которое использует настройки локали. Например, текстовые процессоры хранят язык и кодировку файла в самом файле (в противном случае файл не будет правильно обрабатываться в системе с другими настройками языкового стандарта) и не заботятся о параметрах языкового стандарта, заданных средой.
LC_COLLATE
может иметь неприятные побочные эффекты, в частности потому, что это вызывает порядок сортировки A <a <B <…, который заставляет «между A и Z» включать строчные буквы от a до y. В частности, очень распространенные регулярные выражения, такие как [A-Z]
break в некоторых приложениях .
LC_MESSAGES
: язык информационных сообщений и сообщений об ошибках.
LC_NUMERIC
: форматирование чисел: десятичный разделитель и разделитель тысяч.
Многие приложения жестко закодированы .
как десятичный разделитель. Это делает LC_NUMERIC
не очень полезным и потенциально опасным:
- Даже если вы установите его, вы все равно будете часто видеть формат по умолчанию.
- Скорее всего, вы попадаете в ситуацию, когда одно приложение производит вывод, зависящий от локали, а другое приложение ожидает
.
десятичную точку или ,
разделитель полей.
LC_MONETARY
: нравится LC_NUMERIC
, но для сумм в местной валюте.
Очень немногие приложения используют это.
LC_TIME
: форматирование даты и времени: названия дней и месяцев, 12- или 24-часовые часы, порядок частей даты, пунктуация и т. д.
GNU libc, который вы найдете в не встроенном Linux, определяет дополнительные категории локалей:
LC_PAPER
: размер бумаги по умолчанию (определяется высотой и шириной).
LC_NAME
, LC_ADDRESS
, LC_TELEPHONE
, LC_MEASUREMENT
, LC_IDENTIFICATION
Я не знаю ни одного приложения , которое использует их.
Переменные среды
Приложения, которые используют настройки локали, определяют их из переменных среды.
- Затем используется значение
LANG
переменной среды, если оно не переопределено другим параметром. Если LANG
не установлено, локаль по умолчанию - C
.
- Эти
LC_xxx
имена могут быть использованы в качестве переменных окружения.
- Если
LC_ALL
установлено, то все остальные значения игнорируются; это в первую очередь полезно для настройки LC_ALL=C
запуска приложений, которые должны выдавать одинаковые выходные данные независимо от того, где они запущены.
- Кроме того, GNU libc используется
LANGUAGE
для определения запасных вариантов LC_MESSAGES
(например, LANGUAGE=fr_BE:fr_FR:en
для предпочтения бельгийского французского, или, если нет французского или французского, или, если английский недоступен).
Установка локалей
Данные локали могут быть большими, поэтому некоторые дистрибутивы не доставляют их в удобной форме и вместо этого требуют дополнительного шага установки.
- В Debian для установки локалей запустите
dpkg-reconfigure locales
и выберите из списка в диалоговом окне или отредактируйте, /etc/locale.gen
а затем запустите locale-gen
.
- В Ubuntu для установки локалей запустите
locale-gen
с именами локалей в качестве аргументов.
Вы можете определить свой собственный язык .
Рекомендация
Полезные настройки:
- Установите
LC_CTYPE
язык и кодировку, в которой вы кодируете свои текстовые файлы. Убедитесь, что ваши терминалы используют эту кодировку.
Для большинства языков важна только кодировка. Есть несколько исключений; например, в верхнем регистре i
является I
в большинстве языков , но İ
на турецком языке ( tr_TR
).
- Установите
LC_MESSAGES
язык, на котором вы хотите видеть сообщения.
- Установите
LC_PAPER
значение, en_US
если вы хотите, чтобы по умолчанию использовалась буква US Letter, и почти все остальное (например en_GB
), если вы хотите использовать формат A4.
- При желании, установите
LC_TIME
ваш любимый формат времени.
Как объяснено выше, избегайте установки LC_COLLATE
и LC_NUMERIC
. Если вы используете LANG
, явно переопределите эти две категории, установив их в C
.
LC_PAPER
. И могу ли я обновить это через систему без перезагрузки?/etc/default/locale
. Эти файлы вступают в силу при входе в систему; Вы можете сделать этоexport LC_PAPER=…
в оболочке, чтобы повлиять на команды, запускаемые из этой оболочки.