setlocale(3) | Library Functions Manual | setlocale(3) |
ИМЯ
setlocale - задаёт текущую локаль
LIBRARY
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.
Categories
- LC_ALL
- LC_COLLATE
- LC_CTYPE
- LC_MONETARY
- LC_NUMERIC
- LC_TIME
- C11, POSIX.1-2008.
- LC_MESSAGES
- POSIX.1-2008.
- Others:
- GNU.
ИСТОРИЯ
POSIX.1-2001, C89.
Categories
- LC_ALL
- LC_COLLATE
- LC_CTYPE
- LC_MONETARY
- LC_NUMERIC
- LC_TIME
- C89, POSIX.1-2001.
- LC_MESSAGES
- POSIX.1-2001.
- Others:
- 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 |