NAME

     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
     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:

     LC_ALL
          for all of the locale.

     LC_COLLATE
          for the functions strcoll() and strxfrm().

     LC_CTYPE
          for the character classification  and  conversion  rou-
          tines.

     LC_MONETARY
          for localeconv().

     LC_NUMERIC
          for the decimal character.

     LC_TIME
          for strftime().

     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.


RETURN VALUE

     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.


CONFORMING TO

     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
     current locale.


SEE ALSO

     locale(1),    localedef(1),    strcoll(3),    localeconv(3),
     strftime(3), locale(7)