locale
Hurricane Electric Internet Services
NAME
locale - Description of multi-language support
SYNOPSIS
#include <locale.h>
DESCRIPTION
A locale is a set of language and cultural rules. These
cover aspects such as language for messages, different
character sets, lexigraphic conventions, etc. A program
needs to be able to determine its locale and act accord-
ingly to be portable to different cultures.
The header <locale.h> declares data types, functions and
macros which are useful in this task.
The functions it declares are setlocale() to set the cur-
rent locale, and localeconv() to get information about
number formatting.
There are different categories for local information a
program might need; they are declared as macros. Using
them as the first argument to the setlocale() function, it
is possible to set one of these to the desired locale:
LC_COLLATE
This is used to change the behaviour of the func-
tions strcoll() and strxfrm(), which are used to
compare strings in the local alphabet. For exam-
ple, the German sharp s is sorted as "ss".
L_CTYPE
This changes the behaviour of the character han-
dling and classification functions, such as isup-
per() and toupper(), and the multi-byte character
functions such as mblen() or wctomb().
LC_MONETARY
changes the behaviour of the information returned
by localeconv() which describes the way numbers are
usually printed, with details such as decimal point
versus decimal comma.
LC_MESSAGES
changes the language messages are displayed in.
LC_TIME
changes the behaviour of the strftime() function to
display the current time in a locally acceptable
form; for example, most of Europe uses a 24-hour
clock vs. the US' 12-hour clock.
LC_ALL All of the above.
If the second argument to setlocale() is empty string, "",
for the default locale, it is determined using the follow-
ing steps:
1. If there is a non-null environment variable LC_ALL,
the value of LC_ALL is used.
2. If an environment variable with the same name as
one of the categories above exists and is non-null,
its value is used for that category.
3. If there is a non-null environment variable LANG,
the value of LANG is used.
Values about local numeric formatting is made available in
a struct lconv returned by the localeconv() function,
which has the following declaration:
struct lconv
{
/* Numeric (non-monetary) information. */
char *decimal_point; /* Decimal point character. */
char *thousands_sep; /* Thousands separator. */
/* Each element is the number of digits in each group;
elements with higher indices are farther left.
An element with value CHAR_MAX means that no further grouping is done.
An element with value 0 means that the previous element is used
for all groups farther left. */
char *grouping;
/* Monetary information. */
/* First three chars are a currency symbol from ISO 4217.
Fourth char is the separator. Fifth char is ' '. */
char *int_curr_symbol;
char *currency_symbol; /* Local currency symbol. */
char *mon_decimal_point; /* Decimal point character. */
char *mon_thousands_sep; /* Thousands separator. */
char *mon_grouping; /* Like `grouping' element (above). */
char *positive_sign; /* Sign for positive values. */
char *negative_sign; /* Sign for negative values. */
char int_frac_digits; /* Int'l fractional digits. */
char frac_digits; /* Local fractional digits. */
/* 1 if currency_symbol precedes a positive value, 0 if succeeds. */
char p_cs_precedes;
/* 1 if a space separates currency_symbol from a positive value. */
char p_sep_by_space;
/* 1 if currency_symbol precedes a negative value, 0 if succeeds. */
char n_cs_precedes;
/* 1 if a space separates currency_symbol from a negative value. */
char n_sep_by_space;
/* Positive and negative sign positions:
0 Parentheses surround the quantity and currency_symbol.
1 The sign string precedes the quantity and currency_symbol.
2 The sign string succeeds the quantity and currency_symbol.
3 The sign string immediately precedes the currency_symbol.
4 The sign string immediately succeeds the currency_symbol. */
char p_sign_posn;
char n_sign_posn;
};
CONFORMS TO
POSIX.1
At the moment, the only locales supported by Linux are the
portable "C" , "POSIX" (identical to the "C" locale),
"ISO-8859-1" (european latin-1) and "KOI-8" (russian)
locales.
SEE ALSO
setlocale(3), localeconf(3), locale(1), localedef(1)
Hurricane Electric Internet Services
Copyright (C) 1998
Hurricane Electric.
All Rights Reserved.