setlocale(3) Library Functions Manual setlocale(3)

ИМЯ

setlocale - задаёт текущую локаль

Standard C library (libc, -lc)

СИНТАКСИС

#include <locale.h>
char *setlocale(int category, const char *locale);

ОПИСАНИЕ

Функция setlocale() используется для назначения или запроса текущей локали программы.

Если locale не равно NULL, то текущая локаль программы изменяется согласно переданным аргументам. Аргументом category определяется какую часть текущей локали программы нужно изменить.

Категория Назначение
LC_ALL Локаль целиком
LC_ADDRESS Formatting of addresses and geography-related items (*)
LC_COLLATE Сортировка строк
LC_CTYPE Классы символов
LC_IDENTIFICATION Метаданные, описывающие локаль (*)
LC_MEASUREMENT Settings related to measurements (metric versus US customary) (*)
LC_MESSAGES Локализированные сообщения на родном языке
LC_MONETARY Форматирование значений денежных единиц
LC_NAME Форматирование приветствий людей (*)
LC_NUMERIC Форматирование не денежных числовых значений
LC_PAPER Настройки стандартных размеров бумаги (*)
LC_TELEPHONE Форматы, используемые в телефонных службах (*)
LC_TIME Форматирование значений дат и времени

Категории, помеченные в таблице звёздочкой, являются расширениями GNU. Дополнительную информацию об этих категориях локали смотрите в locale(7).

Аргумент locale — это указатель на строку символов, содержащую требуемую настройку category. Эта строка может быть понятной константой «C» или «da_DK» (смотрите ниже), или строкой со скрытым форматом, которую вернул другой вызов setlocale().

If locale is an empty string, "", each part of the locale that should be modified is set according to the environment variables. The details are implementation-dependent. For glibc, first (regardless of category), the environment variable LC_ALL is inspected, next the environment variable with the same name as the category (see the table above), and finally the environment variable LANG. The first existing environment variable is used. If its value is not a valid locale specification, the locale is unchanged, and setlocale() returns NULL.

The locale "C" or "POSIX" is a portable locale; it exists on all conforming systems.

A locale name is typically of the form language[_territory][.codeset][@modifier], where language is an ISO 639 language code, territory is an ISO 3166 country code, and codeset is a character set or encoding identifier like ISO-8859-1 or UTF-8. For a list of all supported locales, try "locale -a" (see locale(1)).

Если locale равно NULL, то только возвращается текущая локаль и ничего не меняется.

On startup of the main program, the portable "C" locale is selected as default. A program may be made portable to all locales by calling:


setlocale(LC_ALL, "");

after program initialization, and then:

using the values returned from a localeconv(3) call for locale-dependent information;
using the multibyte and wide character functions for text processing if MB_CUR_MAX > 1;
using strcoll(3) and strxfrm(3) to compare strings; and
using wcscoll(3) and wcsxfrm(3) to compare wide-character strings.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении setlocale() возвращает строку со скрытым форматом, которая соответствует набору локали. Эта строка может находиться в статическом хранилище. Строка возвращается таким образом, что последующий вызов с этой строкой и связанной с ней категорией, восстанавливают эту часть локали процесса. Если вызов не может быть выполнен, то возвращается значение NULL.

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).

Интерфейс Атрибут Значение
setlocale() Безвредность в нитях MT-Unsafe const:locale env

СТАНДАРТЫ

C11, POSIX.1-2008.

C11, POSIX.1-2008.
POSIX.1-2008.
GNU.

ИСТОРИЯ

POSIX.1-2001, C89.

C89, POSIX.1-2001.
POSIX.1-2001.
GNU.

СМОТРИТЕ ТАКЖЕ

locale(1), localedef(1), isalpha(3), localeconv(3), nl_langinfo(3), rpmatch(3), strcoll(3), strftime(3), charsets(7), locale(7)

ПЕРЕВОД

Русский перевод этой страницы руководства разработал Alexander Golubev <fatzer2@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Hotellook, Nikita <zxcvbnm3230@mail.ru>, Spiros Georgaras <sng@hellug.gr>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

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

2 мая 2024 г. Linux man-pages 6.8