Provided by: manpages-ru_0.98-4_all bug

НАИМЕНОВАНИЕ

       locale - Описание поддержки нескольких языков

СИНТАКСИС

       #include <locale.h>

ОПИСАНИЕ

       Локализация  --  это набор языковых и культурных правил.  Они покрывают
       такие  аспекты,  как  язык  сообщений,   различные   наборы   символов,
       лексикографические   соглашения   и   т. д.    Программа  должна  уметь
       определять локализацию и поступать в соответствии  с  ней,  чтобы  быть
       переносимой между различными культурами.

       Заголовочный  файл <locale.h> описывает типы данных, функции и макросы,
       полезные для выполнения этой задачи.

       В  нем  описаны  функции  setlocale(),  которая  устанавливает  текущие
       региональные  настройки и localeconv(), которая возвращает информацию о
       форматировании чисел.

       Существуют различные категории  локализации,  которые  программа  может
       использовать; они описаны как макросы.  Используя их в качестве первого
       аргумента функции setlocale(), можно установить региональные  настройки
       одной из следующих категорий:

       LC_COLLATE
              Эта  категория  используется  для  изменения  поведения  функций
              strcoll() и strxfrm(), которые используются для сравнения  строк
              с   учетом   местного  алфавита.   Например,  Немецкая  sharp  s
              сортируется как "ss".

       LC_CTYPE
              Эта  категория  влияет  на   поведение   функций   обработки   и
              классификации символов, таких как isupper() и toupper(), а также
              многобайтных символьных функций, таких как mblen() или wctomb().

       LC_MONETARY
              влияет   на   информацию,  возвращаемую  функцией  localeconv(),
              которая описывает,  как  отображать  числа:  использовать  ли  в
              качестве   десятичного   разделителя   точку  или  запятую.  Эту
              информацию использует внутри себя функция strfmon().

       LC_MESSAGES
              изменяет язык отображаемых сообщений,  и  как  должны  выглядеть
              положительный  и отрицательный ответы. Библиотека GNU C содержит
              функцию rpmatch() для легкого использования этой информации.

       LC_NUMERIC
              изменяет  информацию,  которой  пользуется   семейство   функций
              printf()  и  scanf(),  если им сказано использовать региональные
              настройки.  Эта информация может быть также прочитана при помощи
              функции localeconv().

       LC_TIME
              влияет на поведение функции strftime(), которая используется для
              отображения  текущего  времени  в  местном  формате;   например,
              большая часть Европы использует 24-х часовой формат, тогда как в
              США используют 12-ти часовой.

       LC_ALL Все вышеперечисленное.

       Если второй  аргумент  функции  setlocale()---  пустая  строка  "",  то
       локализация по умолчанию будет определяться, используя следующие шаги:

       1.     Если   существует   непустая  переменная  окружения  LC_ALL,  то
              используется ее значение.

       2.     Если  существует  переменная  окружения  с   именем   одной   из
              вышеописанных категорий локализации и она не пустая, ее значение
              используется для этой категории.

       3.     Если  существует  непустая   переменная   окружения   LANG,   то
              используется ее значение.

       Информация  о  местном форматировании чисел доступна в структуре struct
       lconv, возвращаемой функцией localeconv(), которая объявлена  следующим
       образом:
       struct lconv
       {
         /* Числовая (не связанная с деньгами) информация.  */

         char *decimal_point;        /* Символ десятичной точки.  */
         char *thousands_sep;        /* Разделитель тысяч.        */
         /* Каждый элемент является номером цифры в каждой группе;
            бОльшие элементы указывают на крайние левые значения.
            Элемент с значением CHAR_MAX означает старших групп больше нет.
            Элемент со значением 0 указывает что предыдущий элемент используется
            для всех групп левее.  */
         char *grouping;

         /* Денежная информация.  */

         /* Первые три символа являются символом валюты согласно ISO 4217.
            Четвертый символ является разделителем. Пятый символ равен '\0'.    */
         char *int_curr_symbol;
         char *currency_symbol;        /* Местный символ валюты.    */
         char *mon_decimal_point;      /* Символ десятичной точки.  */
         char *mon_thousands_sep;      /* Разделитель тысяч.        */
         char *mon_grouping;           /* См. выше описание элемента `grouping' */
         char *positive_sign;          /* Знак положительных значений.  */
         char *negative_sign;          /* Знак отрицательных значений.  */
         char int_frac_digits;         /* Int'l fractional digits.  */
         char frac_digits;             /* Local fractional digits.  */
         /* 1 если символ валюты предшествует положительному значению,
            0 если следует за ним.  */
         char p_cs_precedes;
         /* 1 если пробел отделяет символ валюты от положительного значения.    */
         char p_sep_by_space;
         /* 1 если символ валюты предшествует отрицательному значению,
            0 если следует за ним.  */
         char n_cs_precedes;
         /* 1 если пробел отделяет символ валюты от отрицательного значения.    */
         char n_sep_by_space;
         /* Позиция положительного или отрицательного знака:
            0 Скобки окружают количество и символ валюты.
            1 Знак предшествует количеству и символу валюты.
            2 Знак следует за количеством и символом валюты.
            3 Знак непосредственно предшествует символу валюты.
            4 Знак непосредственно следует за символом валюты.       */
         char p_sign_posn;
         char n_sign_posn;
       };

СООТВЕТСТВИЕ СТАНДАРТАМ

       POSIX.1

СМОТРИ ТАКЖЕ

       setlocale(3),   localeconv(3),   locale(1),  localedef(1),  rpmatch(3),
       strfmon(3), strcoll(3), strxfrm(3), strftime(3)

ПЕРЕВОД

       Перевел с английского Алексей Миллер <asm@asm.kiev.ua>