Настройки локали - это пользовательские настройки, относящиеся к вашей культуре.
Названия локалей
Во всех текущих версиях 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. И могу ли я обновить это через систему без перезагрузки?