SETLOCALE(3)		  Linux Programmer's Manual		 SETLOCALE(3)



NAME
       setlocale - set the current locale

SYNOPSIS
       #include 

       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 not	 NULL,	the  program's	current	 locale	 is  modified
       according  to  the  arguments.  The argument category 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 colla-
	      tion.

       LC_CTYPE
	      for regular expression matching, character classification, con-
	      version,	case-sensitive	comparison,  and wide character func-
	      tions.

       LC_MESSAGES
	      for localizable natural-language messages.

       LC_MONETARY
	      for monetary formatting.

       LC_NUMERIC
	      for number formatting (such as the decimal point and the	thou-
	      sands 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 implemen-
       tation dependent.  For glibc,  first  (regardless  of  category),  the
       environment  variable  LC_ALL is inspected, next the environment vari-
       able with the same name as the category (LC_COLLATE, LC_CTYPE, LC_MES-
       SAGES,  LC_MONETARY,  LC_NUMERIC, LC_TIME) and finally the environment
       variable LANG.  The first existing environment variable is  used.   If
       its  value  is  not  a  valid  locale  specification,  the  locale  is
       unchanged, and setlocale returns NULL.

       The locale "C" or "POSIX" is a portable locale; its LC_CTYPE part cor-
       responds to the 7-bit ASCII character set.

       A  locale  name	is  typically of the form language[_territory][.code-
       set][@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	 sup-
       ported 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	program	 initialization, by using the
       values returned from a localeconv() call for locale - dependent infor-
       mation,	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 corre-
       sponds 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	 pro-
       cess's  locale. The return value is NULL if the request cannot be hon-
       ored.

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 Euro-
       pean  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), localeconv(3), strf-
       time(3), charsets(4), locale(7), nl_langinfo(3)



GNU				  1999-07-04			 SETLOCALE(3)