locale

Hurricane Electric Internet Services: Accounts starting at $9.95/month
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: Accounts starting at $9.95/month
Hurricane Electric Internet Services
Copyright (C) 1998 Hurricane Electric. All Rights Reserved.