| \section{Standard module \sectcode{locale}} |
| \stmodindex{locale} |
| |
| \label{module-locale} |
| |
| The \code{locale} module opens access to the POSIX locale database and |
| functionality. The POSIX locale mechanism allows applications to |
| integrate certain cultural aspects into an applications, without |
| requiring the programmer to know all the specifics of each country |
| where the software is executed. |
| |
| The \code{locale} module is implemented on top of the \code{_locale} |
| module, which in turn uses an ANSI C locale implementation if |
| available. |
| |
| The \code{locale} module defines the following functions: |
| |
| \renewcommand{\indexsubitem}{(in module locale)} |
| |
| \begin{funcdesc}{setlocale}{category\optional{\, value}} |
| If \var{value} is specified, modifies the locale setting for the |
| \var{category}. The available categories are listed in the data |
| description below. The value is the name of a locale. An empty string |
| specifies the user's default settings. If the modification of the |
| locale fails, the exception \code{locale.Error} is |
| raised. If successful, the new locale setting is returned. |
| |
| If no \var{value} is specified, the current setting for the |
| \var{category} is returned. |
| |
| \code{setlocale} is not thread safe on most systems. Applications |
| typically start with a call of |
| \bcode\begin{verbatim} |
| import locale |
| locale.setlocale(locale.LC_ALL,"") |
| \end{verbatim}\ecode |
| This sets the locale for all categories to the user's default setting |
| (typically specified in the \code{LANG} environment variable). If the |
| locale is not changed thereafter, using multithreading should not |
| cause problems. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{localeconv}{} |
| Returns the database of of the local conventions as a dictionary. This |
| dictionary has the following strings as keys: |
| \begin{itemize} |
| \item \code{decimal_point} specifies the decimal point used in |
| floating point number representations for the \code{LC_NUMERIC} |
| category. |
| \item \code{grouping} is a sequence of numbers specifying at which |
| relative positions the \code{thousands_sep} is expected. If the |
| sequence is terminated with \code{locale.CHAR_MAX}, no further |
| grouping is performed. If the sequence terminates with a 0, the last |
| group size is repeatedly used. |
| \item \code{thousands_sep} is the character used between groups. |
| \item \code{int_curr_symbol} specifies the international currency |
| symbol from the \code{LC_MONETARY} category. |
| \item \code{currency_symbol} is the local currency symbol. |
| \item \code{mon_decimal_point} is the decimal point used in monetary |
| values. |
| \item \code{mon_thousands_sep} is the separator for grouping of |
| monetary values. |
| \item \code{mon_grouping} has the same format as the \code{grouping} |
| key; it is used for monetary values. |
| \item \code{positive_sign} and \code{negative_sign} gives the sign |
| used for positive and negative monetary quantities. |
| \item \code{int_frac_digits} and \code{frac_digits} specify the number |
| of fractional digits used in the international and local formatting |
| of monetary values. |
| \item \code{p_cs_precedes} and \code{n_cs_precedes} specifies whether |
| the currency symbol precedes the value for positive or negative |
| values. |
| \item \code{p_sep_by_space} and \code{n_sep_by_space} specifies |
| whether there is a space between the positive or negative value and |
| the currency symbol. |
| \item \code{p_sign_posn} and \code{n_sign_posn} indicate how the |
| sign should be placed for positive and negative monetary values. |
| \end{itemize} |
| The possible values for \code{p_sign_posn} and \code{n_sign_posn} |
| are given below. |
| \begin{itemize} |
| \item 0 - Currency and value are surrounded by parentheses. |
| \item 1 - The sign should precede the value and currency symbol. |
| \item 2 - The sign should follow the value and currency symbol. |
| \item 3 - The sign should immediately precede the value. |
| \item 4 - The sign should immediately follow the value. |
| \item LC_MAX - nothing is specified in this locale. |
| \end{itemize} |
| \end{funcdesc} |
| |
| \begin{funcdesc}{strcoll}{string1,string2} |
| Compares two strings according to the current LC_COLLATE setting. As |
| any other compare function, returns a negative, or a positive value, |
| or 0, depending on whether \var{string1} collates before or after |
| \var{string2} or is equal to it. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{strxfrm}{string} |
| Transforms a string to one that can be used for the builtin function |
| \code{cmp}, and still returns locale-aware results. This function can be |
| used when the same string is compared repeatedly, e.g. when collating |
| a sequence of strings. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{format}{format,val\optional{grouping=0}} |
| Formats a number \var{val} according to the current LC_NUMERIC |
| setting. The format follows the conventions of the \% operator. For |
| floating point values, the decimal point is modified if |
| appropriate. If \var{grouping} is true, also takes the grouping into |
| account. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{str}{float} |
| Formats a floating point number using the same format as |
| \code{string.str}, but takes the decimal point into account. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{atof}{string} |
| Converts a string to a floating point number, following the LC_NUMERIC |
| settings. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{atoi}{string} |
| Converts a string to an integer, following the LC_NUMERIC conventions. |
| \end{funcdesc} |
| |
| \begin{datadesc}{LC_CTYPE} |
| Locale category for the character type functions. Depending on the |
| settings of this category, the functions of module \code{string} |
| dealing with case change their behaviour. |
| \end{datadesc} |
| |
| \begin{datadesc}{LC_COLLATE} |
| Locale category for sorting strings. The functions \code{strcoll} and |
| \code{strxfrm} of the locale module are affected. |
| \end{datadesc} |
| |
| \begin{datadesc}{LC_TIME} |
| Locale category for the formatting of time. The function |
| \code{time.strftime} follows these conventions. |
| \end{datadesc} |
| |
| \begin{datadesc}{LC_MONETARY} |
| Locale category for formatting of monetary values. The available |
| options are available from the \code{localeconv} function. |
| \end{datadesc} |
| |
| \begin{datadesc}{LC_MESSAGES} |
| Locale category for message display. Python currently does not support |
| application specific locale-aware messages. Messages displayed by the |
| operating system, like those returned by \code{posix.strerror} might |
| be affected by this category. |
| \end{datadesc} |
| |
| \begin{datadesc}{LC_NUMERIC} |
| Locale category for formatting numbers. The functions |
| \code{format}, \code{atoi}, \code{atof} and \code{str} of the locale module |
| are affected by that category. All other numeric formatting operations |
| are not affected. |
| \end{datadesc} |
| |
| \begin{datadesc}{LC_ALL} |
| Combination of all locale settings. If this flag is used when the |
| locale is changed, setting the locale for all categories is |
| attempted. If that fails for any category, no category is changed at |
| all. When the locale is retrieved using this flag, a string indicating |
| the setting for all categories is returned. This string can be later |
| used to restore the settings. |
| \end{datadesc} |
| |
| \begin{datadesc}{CHAR_MAX} |
| This is a symbolic constant used for different values returned by |
| \code{localeconv}. |
| \end{datadesc} |
| |
| \begin{excdesc}{Error} |
| Exception raised when \code{setlocale} fails. |
| \end{excdesc} |
| |
| Example: |
| |
| \bcode\begin{verbatim} |
| >>> import locale |
| >>> locale.open(locale.LC_ALL,"de") #setting locale to German |
| >>> locale.strcoll("f\344n","foo") #comparing a string containing an umlaut |
| >>> can.close() |
| \end{verbatim}\ecode |