| Категория | Значение |
|---|---|
LC_ALL | Эта категория включает всю возможную информацию локали. Она состоит из оставшейся части элементов этой таблицы |
LC_COLLATE | Категория для сравнения строк (обсуждаемого ниже) и областей регулярных выражений |
LC_CTYPE | Категория для классификации символов (заглавные, строчные и т.д.) Это влияет на сопоставление регулярных выражений и функции is в |
LC_MESSAGES | Категория для специфичных для локали сообщений. Эта категория вступает в игру с GNU gettext, которая обсуждает далее в главе |
LC_MONETARY | Категория для форматирования денежной информации, такой, как локальные и международные символы для местной валюты (например, $ против USD для доллара США), форматирования отрицательных величин и т.д. |
LC_NUMERIC | Категория для форматирования числовых значений |
LC_TIME | Категория для форматирования дат и времени |
Эти категории определены различными стандартами. Некоторые системы могут поддерживать дополнительные категории, такие, как LC_TELEPHONE
LC_ADDRESS. Однако, они не стандартизованы; любой программе, которой нужно их использовать, но которая все равно должна быть переносимой, следует использовать #ifdef для окружения соответствующих разделов.По умолчанию, программы С и библиотека С ведут себя так, как если бы они находились в локали «С» или «POSIX» для обеспечения обратной совместимости со старыми системами. Однако, вызвав setlocale()
Переменные окружения имеют те же самые имена, что и перечисленные в табл. 13.1 категории локалей. Таким образом, команда —
export LC_NUMERIС=en_DK LC_TIME=C
— определяет, что числа должны выводиться в соответствии с локалью 'en_DK
С'. (Этот пример просто иллюстрирует, что вы можете указывать для различных категорий различные локали; это не является чем-то обязательным, что вы Переменная окружения LC_ALL
LC_xxx . Если LC_ALL не установлена, библиотека ищет определенные переменные (LC_CTYPE, LC_MONETARY и т.д.). Наконец, если ни одна из них не установлена, библиотека ищет переменную LANG. Вот небольшая демонстрация с использованием gawk:$ unset LC_ALL LANG
$ export LС_NUMERIC=en_DK LC_TIME=C
/* Европейские числа, дата и время по умолчанию */
$ gawk 'BEGIN { print 1.234 ; print strftime() }'
/* Вывести число, текущие дату и время */
1,234
Wed Jul 09 09:32:18 PDT 2003
$ export LC_NUMERIC=it_IT LC_TIME=it_IT
/* Итальянские числа, дата и время */
$ gawk 'BEGIN { print 1.234 ; print strftime() }'
/* Вывести число, текущие дату и время */
1,234
mer lug 09 09:32:40 PDT 2003
$ export LC_ALL=C
$ gawk 'BEGIN { print 1.234 ; print strftime() }'
/* Вывести число, текущие дату и время */
1.234
Wed Jul 09 09:33:00 PDT 2003
Для awk
.' тогда как числовой вывод следует правилам локали).Почти все GNU версии стандартных утилит Unix могут использовать локали. Таким образом, особенно на системах GNU/Linux, установка этих переменных позволяет вам контролировать поведение системы[139]
.Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT