NL_LANGINFO(3)

ИМЯ
nl_langinfo - запрашивает информацию о языке и локали

ОБЗОР
#include <langinfo.h>

char *nl_langinfo(nl_item item);

ОПИСАНИЕ
Функция nl_langinfo() предоставляет более гибкий доступ к информации локали, нежели localeconv(3). Могут быть запрошены индивидуальные, либо дополнительные элементы категорий локали.

В качестве запрашиваемых элементов локали в поле item могут быть указаны определённые в <langinfo.h> константы:

CODESET (LC_CTYPE)
    Возвращает строку с названием кодировки символов, используемой в выбранной локали, например «UTF-8», «ISO-8859-1» или «ANSI_X3.4-1968» (более известной, как US-ASCII). Это такая же строка, которую возвращает команда «locale charmap». Список названий кодировок символов можно получить по команде «locale -m» (смотрите locale(1)).

D_T_FMT (LC_TIME)
    Возвращает строку, которую можно использовать как строку формата для функции strftime(3) для представления времени и даты в формате данной локали.

D_FMT (LC_TIME)
    Возвращает строку, которую можно использовать как строку формата для функции strftime(3) для представления даты в формате данной локали.

T_FMT (LC_TIME)
    Возвращает строку, которую можно использовать как строку формата для функции strftime(3) для представления времени в формате данной локали.

DAY_{1–7} (LC_TIME)
    Возвращает название n-го дня недели. ПРЕДУПРЕЖДЕНИЕ: подразумевается формат США, в котором DAY_1 = воскресенье, а не интернациональный формат (ISO 8601), в котором первым днём недели является понедельник.

ABDAY_{1–7} (LC_TIME)
    Возвращает сокращённое название n-го дня недели.

MON_{1–12} (LC_TIME)
    Возвращает название n-го месяца.

ABMON_{1–12} (LC_TIME)
    Возвращает сокращённое название n-го месяца.

RADIXCHAR (LC_NUMERIC)
    Возвращает символ разделителя целой и дробной части (десятичную точку, запятую и т. п.).

THOUSEP (LC_NUMERIC)
    Возвращает разделитель тысячных разрядов (групп по 3 цифры).

YESEXPR (LC_MESSAGES)
    Возвращает регулярное выражение, которое может быть использовано в функции regex(3) для распознания положительного ответа на вопрос да/нет.

NOEXPR (LC_MESSAGES)
    Возвращает регулярное выражение, которое может быть использовано в функции regex(3) для распознания отрицательного ответа на вопрос да/нет.

CRNCYSTR (LC_MONETARY)
    Возвращает обозначение валюты, с предшествующими символами: «-», если знак валюты должен стоять перед числами, «+», если знак валюты должен стоять после чисел или «.», если знак валюты должен заменять разделитель целой и дробной части.

Список вышеперечисленных элементов — это всего лишь небольшая часть того, что может быть запрошено. Более подробный список приведён в справочном руководстве по библиотеке GNU C.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Если с помощью setlocale(3) не была указана локаль для соответствующей категории, то nl_langinfo возвращает указатель на соответствующую строку локали «C».

Если задано неправильное значение item, то возвращается указатель на пустую строку.

Данный указатель может указывать на статические данные, которые могут быть перезаписаны последующим вызовом nl_langinfo или setlocale(3).

СООТВЕТСТВИЕ СТАНДАРТАМ
SUSv2, POSIX.1-2001.

ПРИМЕР
Следующая программа настраивает кодировку символов локали в соответствии с окружением и запрашивает кодировку символов терминала.

#include <langinfo.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
int
main(int argc, char *argv[])
{
    setlocale(LC_CTYPE,"");
    printf("%s\n",nl_langinfo(CODESET));
    exit(EXIT_SUCCESS);
}

СМОТРИТЕ ТАКЖЕ
locale(1), localeconv(3), setlocale(3), charsets(7), locale(7)
Справочное руководство по библиотеке GNU C (GNU C Library Reference Manual)