setlocale - set the current locale.


SYNOPSIS

       #include <locale.h>

       char *setlocale(int category, const char * locale);


DESCRIPTION

       The  setlocale() function is used to set or query the pro­
       gram's current locale.

       If locale is not NULL, the  program's  current  locale  is
       modified  according  to the arguments.  The argument cate­
       gory 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 classi­
              fication,  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,

       the  environment  variable LANG.  The first existing envi­
       ronment variable is used.  If its value  is  not  a  valid
       locale  specification, the locale is unchanged, and setlo­
       cale 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[_terri­
       tory][.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  pro­
       gram   initialization, by using the values returned from a
       localeconv() call for locale - dependent  information,  by
       using the multi-byte and wide character functions for text
       processing if MB_CUR_MAX >  1,  and  by  using  strcoll(),
       wcscoll() or strxfrm(), wcsxfrm() to compare strings.


RETURN VALUE

       A  successful 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.


CONFORMING TO

       ANSI C, POSIX.1


NOTES

       Linux  (that  is,  GNU 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.


SEE ALSO

       locale(1),  localedef(1),  strcoll(3), isalpha(3), locale­
       conv(3), strftime(3), charsets(4), locale(7)


Man(1) output converted with man2html