setlocale - set the current locale.
char *setlocale(int category, const char * locale));
The setlocale() function is used to set or query the
program's current locale. If locale is the current locale
is set to the portable locale.
If locale is the locale is set to the default locale which
is selected from the environment variable LANG.
On startup of the main program, the portable "" "C" locale
is selected as default.
The argument category determines which functions are influ-
enced by the new locale:
for all of the locale.
for the functions strcoll() and strxfrm().
for the character classification and conversion rou-
for the decimal character.
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() call for
locale - dependent information and by using strcoll() or
strxfrm() to compare strings.
A successful call to setlocale() returns a string that
corresponds to the locale set. This string may be allocated
in static storage. The string returned is such that a sub-
sequent 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.
ANSI C, POSIX.1
Linux (that is, libc) supports the portable locales In the
good old days there used to be support for the European
Latin-1 "" "ISO-8859-1" locale (e.g. in libc-4.5.21 and
libc-4.6.27), and the Russian "" "KOI-8" (more precisely,
"koi-8r") locale (e.g. in libc-4.6.27), so that having an
environment variable LC_CTYPE=ISO-8859-1 sufficed to make
isprint() return the right answer. These days non-English
speaking Europeans have to work a bit harder, and must
install actual locale files.
The printf() family of functions may or may not honor the
locale(1), localedef(1), strcoll(3), localeconv(3),