setlocale(3) - Linux man page
Name
setlocale - set the current localeSynopsis
#include <locale.h> char *setlocale(int category, const char *locale);
Description
If locale is not NULL, the program's current locale is modified according to the arguments. The argument category determines which parts of the program's current locale should be modified.
- LC_ALL
- for all of the locale.
- LC_COLLATE
- for regular expression matching (it determines the meaning of range expressions and equivalence classes) and string collation.
- LC_CTYPE
- for regular expression matching, character classification, conversion, case-sensitive comparison, and wide character functions.
- LC_MESSAGES
- for localizable natural-language messages.
- LC_MONETARY
- for monetary formatting.
- LC_NUMERIC
- for number formatting (such as the decimal point and the thousands separator).
- LC_TIME
- for time and date formatting.
The argument locale is a pointer to a character string containing the required setting of category. Such a string is either a well-known constant like "C" or "da_DK" (see below), or an opaque string that was returned by another call of setlocale().
If locale is , 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 (LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME) 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; its LC_CTYPE part corresponds to the 7-bit ASCII character set.
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", cf. locale(1).
If locale is NULL, the current locale is only queried, not modified.
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, by using the values returned from a localeconv(3) call for locale-dependent information, by using the multibyte and wide character functions for text processing if MB_CUR_MAX > 1, and by using strcoll(3), wcscoll(3) or strxfrm(3), wcsxfrm(3) to compare strings.