summaryrefslogtreecommitdiffstats
path: root/man3/setlocale.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/setlocale.3')
-rw-r--r--man3/setlocale.3189
1 files changed, 189 insertions, 0 deletions
diff --git a/man3/setlocale.3 b/man3/setlocale.3
new file mode 100644
index 000000000..a121409c4
--- /dev/null
+++ b/man3/setlocale.3
@@ -0,0 +1,189 @@
+.\" (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de)
+.\" and 1999 by Bruno Haible (haible@clisp.cons.org)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date. The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein. The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\" License.
+.\" Modified Sat Jul 24 18:20:12 1993 by Rik Faith (faith@cs.unc.edu)
+.\" Modified Tue Jul 15 16:49:10 1997 by Andries Brouwer (aeb@cwi.nl)
+.\" Modified Sun Jul 4 14:52:16 1999 by Bruno Haible (haible@clisp.cons.org)
+.\" Modified Tue Aug 24 17:11:01 1999 by Andries Brouwer (aeb@cwi.nl)
+.\" Modified Tue Feb 6 03:31:55 2001 by Andries Brouwer (aeb@cwi.nl)
+.\"
+.TH SETLOCALE 3 1999-07-04 "GNU" "Linux Programmer's Manual"
+.SH NAME
+setlocale \- set the current locale
+.SH SYNOPSIS
+.nf
+.B #include <locale.h>
+.sp
+.BI "char *setlocale(int " category ", const char *" locale );
+.fi
+.SH DESCRIPTION
+The
+.B setlocale()
+function is used to set or query the program's current locale.
+.PP
+If
+.I locale
+is not
+.BR NULL ,
+the program's current locale is modified according to the arguments.
+The argument
+.I category
+determines which parts of the program's current locale should be modified.
+.TP
+.B LC_ALL
+for all of the locale.
+.TP
+.B LC_COLLATE
+for regular expression matching (it determines the meaning
+of range expressions and equivalence classes) and string collation.
+.TP
+.B LC_CTYPE
+for regular expression matching, character classification, conversion,
+case-sensitive comparison, and wide character functions.
+.TP
+.B LC_MESSAGES
+for localizable natural-language messages.
+.TP
+.B LC_MONETARY
+for monetary formatting.
+.TP
+.B LC_NUMERIC
+for number formatting (such as the decimal point and the thousands separator).
+.TP
+.B LC_TIME
+for time and date formatting.
+.PP
+The argument
+.I locale
+is a pointer to a character string containing the
+required setting of
+.IR 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
+.BR setlocale .
+.PP
+If
+.I locale
+is
+.BR """""" ,
+each part of the locale that should be modified is set according to the
+environment variables. The details are implementation dependent.
+For glibc, first
+.\" [This is false on my system - must check which library versions do this]
+.\" if
+.\" .I category
+.\" is LC_MESSAGES, the environment variable LANGUAGE is inspected,
+.\" then
+(regardless of
+.IR category ),
+the environment variable LC_ALL is inspected,
+next the environment variable with the same name as the category
+(LC_COLLATE, LC_CTYPE, LC_MESSAGES, 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
+.B setlocale
+returns NULL.
+.\" The environment variable LANGUAGE may contain several, colon-separated,
+.\" locale names.
+.PP
+The locale
+.B """C"""
+or
+.B """POSIX"""
+is a portable locale; its LC_CTYPE part corresponds to the 7-bit ASCII
+character set.
+.PP
+A locale name is typically of the form
+.IR language "[_" territory "][." codeset "][@" modifier "],"
+where
+.I language
+is an ISO 639 language code,
+.I territory
+is an ISO 3166 country code, and
+.I codeset
+is a character set or encoding identifier like
+.B "ISO-8859-1"
+or
+.BR "UTF-8" .
+For a list of all supported locales, try "locale -a", cf.\&
+.BR locale (1).
+.PP
+If
+.I locale
+is
+.BR NULL ,
+the current locale is only queried, not modified.
+.PP
+On startup of the main program, the portable
+.B """C"""
+locale is selected as default.
+A program may be made portable to all locales by calling
+.B setlocale(LC_ALL, """""")
+after program initialization, by using the values returned
+from a
+.B localeconv()
+call
+for locale \- dependent information, by using the multi-byte and wide
+character functions for text processing if
+.BR "MB_CUR_MAX > 1" ,
+and by using
+.BR strcoll() ", " wcscoll()
+or
+.BR strxfrm() ", " wcsxfrm()
+to compare strings.
+.SH "RETURN VALUE"
+A successful call to
+.B 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
+.B NULL
+if the request cannot be honored.
+.SH "CONFORMING TO"
+ANSI C, POSIX.1
+.SH NOTES
+Linux (that is, GNU libc) supports the portable locales
+.BR """C""" " and " """POSIX""" .
+In the good old days there used to be support for
+the European Latin-1
+.B """ISO-8859-1"""
+locale (e.g. in libc-4.5.21 and libc-4.6.27), and the Russian
+.B """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.
+.SH "SEE ALSO"
+.BR locale (1),
+.BR localedef (1),
+.BR isalpha (3),
+.BR localeconv (3),
+.BR strcoll (3),
+.BR strftime (3),
+.BR charsets (4),
+.BR locale (7)