− set the current locale
*setlocale(int category, const char
setlocale() function is used to set or query the
program’s current locale.
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.
marked with an asterisk in the above table are GNU
extensions. For further information on these locale
categories, see locale(7).
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().
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.
"C" or "POSIX" is a
portable locale; it exists on all conforming systems.
A locale name
is typically of the form
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 is NULL, the current locale is only queried,
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:
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.
call to setlocale() returns an opaque string that
corresponds to the locale set. This string may be allocated
in static storage. The string returned is such that a
subsequent call with that string and its associated category
will restore that part of the process’s locale. The
return value is NULL if the request cannot be honored.
explanation of the terms used in this section, see
POSIX.1-2008, C89, C99.
rpmatch(3), strcoll(3), strftime(3),
This page is
part of release 4.04 of the Linux man-pages project.
A description of the project, information about reporting
bugs, and the latest version of this page, can be found at