Available in

(1) (1)/fr (1posix) (3perl) (5) (5)/es (5)/fr (5)/it (5)/ja (5)/pl (5)/pt (5)/zh_CN (5)/zh_TW (7) (7)/cs (7)/de (7)/es (7)/fr (7)/hu (7)/it (7)/ja (7)/pl (7)/pt (7)/ru (7)/zh_CN (7)/zh_TW

TOC

LOCALE(7)               Руководство программиста Linux               LOCALE(7)



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

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

СИНТАКСИС

       #include <locale.h>

ОПИСАНИЕ

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

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

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

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

       LC_COLLATE
              Эта  категория используется для изменения поведения функций str-
              coll() и 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), strf-
       mon(3), strcoll(3), strxfrm(3), strftime(3)



ПЕРЕВОД

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



Linux                           24 апреля 1993                       LOCALE(7)

COMMENTS

Add your comment here. Whitespace and linebreaks are preserved. URLs are linked automatically.
CAPTCHA

No HTML allowed. URLs will be linked with nofollow attribute. Whitespace is preserved.