Scroll to navigation

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

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

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>
24 апреля 1993 Linux