#include <locale.h> char *setlocale(int category, const char * 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 influenced by the new locale:
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.
Linux (that is, libc) supports the portable locales C and POSIX. 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 current locale.