The setlocale() function is used to change or query part or all of the current locale. The effect of the category argument for each value is described in Locale categories. A value of "C" for locale specifies the minimal environment for C translation. An empty string, "", for locale specifies the implementation‑defined native environment. At program startup, the equivalent of setlocale(LC_ALL, "C") is executed.
The values of category are:
LC_COLLATEAffects the behavior of strcoll().
LC_CTYPEAffects the behavior of the character handling functions.
LC_MONETARYAffects the monetary formatting information returned by localeconv().
LC_NUMERICAffects the decimal‑point character for the formatted input/output functions and the string conversion functions and the numeric formatting information returned by localeconv().
LC_TIMECan affect the behavior of strftime(). For currently supported locales, the option has no effect.
LC_ALLAffects all locale categories. This is the bitwise OR of all the locale categories.
If a pointer to a string is given for locale and the selection is valid, the string associated with the specified category for the new locale is returned. If the selection cannot be honored, a null pointer is returned and the locale is not changed.
A null pointer for locale causes the string associated with the category for the current locale to be returned and the locale is not changed.
If category is LC_ALL and the most recent successful locale‑setting call uses a category other than LC_ALL, a composite string might be returned. The string returned when used in a subsequent call with its associated category restores that part of the program locale. The string returned is not modified by the program, but might be overwritten by a subsequent call to setlocale().