Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
SETLOCALE(3)	       FreeBSD Library Functions Manual		  SETLOCALE(3)

     setlocale -- natural language formatting for C

     Standard C	Library	(libc, -lc)

     #include <locale.h>

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

     The setlocale() function sets the C library's notion of natural language
     formatting	style for particular sets of routines.	Each such style	is
     called a `locale' and is invoked using an appropriate name	passed as a C

     The setlocale() function recognizes several categories of routines.
     These are the categories and the sets of routines they select:

     LC_ALL	  Set the entire locale	generically.

     LC_COLLATE	  Set a	locale for string collation routines.  This controls
		  alphabetic ordering in strcoll() and strxfrm().

     LC_CTYPE	  Set a	locale for the ctype(3)	and multibyte(3) functions.
		  This controls	recognition of upper and lower case, alpha-
		  betic	or non-alphabetic characters, and so on.

     LC_MESSAGES  Set a	locale for message catalogs, see catopen(3) function.

     LC_MONETARY  Set a	locale for formatting monetary values; this affects
		  the localeconv() function.

     LC_NUMERIC	  Set a	locale for formatting numbers.	This controls the for-
		  matting of decimal points in input and output	of floating
		  point	numbers	in functions such as printf() and scanf(), as
		  well as values returned by localeconv().

     LC_TIME	  Set a	locale for formatting dates and	times using the
		  strftime() function.

     LANG	  Sets the generic locale category for native language,	local
		  customs and coded character set in the absence of more spe-
		  cific	locale variables.

     Only three	locales	are defined by default,	the empty string "" which de-
     notes the native environment, and the "C" and "POSIX" locales, which de-
     note the C	language environment.  A locale	argument of NULL causes
     setlocale() to return the current locale.

     The option	-a to the locale(1) command can	be used	to display all further
     possible names for	the locale argument that are recognized.  Specifying
     any unrecognized value for	locale makes setlocale() fail.

     By	default, C programs start in the "C" locale.

     The only function in the library that sets	the locale is setlocale(); the
     locale is never changed as	a side effect of some other routine.

     Upon successful completion, setlocale() returns the string	associated
     with the specified	category for the requested locale.  The	setlocale()
     function returns NULL and fails to	change the locale if the given combi-
     nation of category	and locale makes no sense.

     /usr/share/locale/locale/category	locale file for	the locale locale and
					the category category.

     The following code	illustrates how	a program can initialize the interna-
     tional environment	for one	language, while	selectively modifying the pro-
     gram's locale such	that regular expressions and string operations can be
     applied to	text recorded in a different language:

	 setlocale(LC_ALL, "de");
	 setlocale(LC_COLLATE, "fr");

     When a process is started,	its current locale is set to the C or POSIX
     locale.  An internationalized program that	depends	on locale data not de-
     fined in the C or POSIX locale must invoke	the setlocale subroutine in
     the following manner before using any of the locale-specific information:

	 setlocale(LC_ALL, "");

     No	errors are defined.

     locale(1),	localedef(1), catopen(3), ctype(3), localeconv(3),
     multibyte(3), strcoll(3), strxfrm(3), euc(5), utf8(5), environ(7)

     The setlocale() function conforms to ISO/IEC 9899:1999 ("ISO C99").

     The setlocale() function first appeared in	4.4BSD.

FreeBSD	13.0			August 7, 2020			  FreeBSD 13.0


Want to link to this manual page? Use this URL:

home | help