locale - Description de la gestion multilingue
#include <locale.h>
Les paramètres régionaux (ou
locale, en anglais)
constituent un ensemble de règles linguistiques et culturelles. Cela
couvre des aspects tels que la langue utilisée pour les messages, le
jeu de caractères, les conventions lexicographiques, etc. Un
programme doit être capable de déterminer les paramètres
de l'utilisateur et d'agir en conséquence pour être portable
dans divers environnements culturels.
The header
<locale.h> declares data types, functions, and macros
which are useful in this task.
Les fonctions déclarées sont
setlocale(3) pour
définir les paramètres actuels et
localeconv(3) pour
obtenir des informations sur la mise en forme des nombres.
Il existe différentes catégories de paramètres
régionaux qui peuvent être utiles à un programme. Elles
sont déclarées en tant que macros. En les utilisant comme
premier argument de la fonction
setlocale(3), il devient possible de
définir l'une de ces catégories à la
régionalisation désirée :
-
LC_ADDRESS (extension GNU, depuis la glibc 2.2)
- Modification des réglages décrivant les
formats (comme les adresses postales) utilisés pour décrire
les régionalisations et les éléments relatifs
à la géographie. Les applications ayant besoin de ces
renseignements peuvent utiliser nl_langinfo(3) pour
récupérer les éléments non normalisés
comme _NL_ADDRESS_COUNTRY_NAME (nom de pays, dans la langue des
paramètres régionaux) ou _NL_ADDRESS_LANG_NAME (nom
de langue, dans la langue des paramètres régionaux) qui
renvoient des chaînes comme « France »
ou « français » (pour des
paramètres régionaux relatifs à la France).
(D’autres noms d’éléments sont dans
<langinfo.h>.)
- LC_COLLATE
- Cette catégorie définit les règles
d’assemblage utilisées pour le tri et les expressions
rationnelles, y compris les classes d’équivalence de
caractères et les éléments d’assemblage
multicaractères. Cette catégorie de paramètres
régionaux modifie le comportement des fonctions strcoll(3)
et strxfrm(3) qui permettent les comparaisons de chaînes
dans l'alphabet régional. Par exemple, le eszett allemand est
ordonné comme « ss ».
- LC_CTYPE
- Cette catégorie définit
l’interprétation des séquences d’octets comme
des caractères (par exemple, caractères simples ou
multioctets), classifications de caractères (par exemple,
alphabétique ou numérique) et le comportement des classes de
caractères. Sur les systèmes utilisant la glibc, cette
catégorie détermine aussi les règles de
translittération pour iconv(1) et iconv(3). Elle
modifie le comportement des fonctions de manipulation et de classification
de caractères, telles que isupper(3) et toupper(3),
et celui des fonctions travaillant sur des caractères multioctets
comme mblen(3) ou wctomb(3).
-
LC_IDENTIFICATION (extension GNU, depuis la glibc
2.2)
- Modification des réglages relatifs aux
métadonnées pour les paramètres régionaux. Les
applications ayant besoin de ces renseignements peuvent utiliser
nl_langinfo(3) pour récupérer les
éléments non normalisés comme
_NL_IDENTIFICATION_TITLE (titre du document actuel de
paramètres régionaux) ou _NL_IDENTIFICATION_TERRITORY
(territoire géographique auquel ce document de paramètres
régionaux s’applique) qui pourraient renvoyer des
chaînes comme « paramètres régionaux
français pour la France » ou
« France ». (D’autres noms
d’éléments sont dans <langinfo.h>.)
- LC_MONETARY
- Cette catégorie définit les règles de
mise en forme utilisées pour les valeurs numériques
monétaires. Elle modifie l'information renvoyée par
localeconv(3) qui décrit la mise en forme habituelle des
nombres, en accord avec des détails comme le point décimal
ou la virgule décimale. Ces informations sont utilisées en
interne par la fonction strfmon(3).
- LC_MESSAGES
- Cette catégorie modifie la langue utilisée
pour afficher les messages et la saisie de réponses affirmatives ou
négatives. La bibliothèque C de GNU contient les
fonctions gettext(3), ngettext(3) et rpmatch(3) pour
faciliter l'utilisation de ces données. Les fonctions de la famille
GNU gettext obéissent aussi à la variable d'environnement
LANGUAGE (contenant une liste de paramètres régionaux
séparés par des deux-points) si la catégorie
désigne un ensemble de paramètres régionaux valable
autre que « C ». Cette
catégorie modifie aussi le comportement de catopen(3).
-
LC_MEASUREMENT (extension GNU, depuis la glibc
2.2)
- Modification des réglages relatifs au système
utilisé pour les mesures avec les paramètres
régionaux (c’est-à-dire le système
métrique ou les unités de mesure américaines). Les
applications peuvent utiliser nl_langinfo(3) pour
récupérer les éléments non normalisés
comme l’élément _NL_MEASUREMENT_MEASUREMENT
qui renvoie un pointeur vers un caractère qui vaut 1
(système métrique) ou 2 (unités de mesure
américaines).
-
LC_NAME (extension GNU, depuis la glibc 2.2)
- Modification des réglages décrivant les
formats utilisés pour s’adresser aux personnes. Les
applications ayant besoin de ces renseignements peuvent utiliser
nl_langinfo(3) pour récupérer les
éléments non normalisés comme _NL_NAME_NAME_MR
(titre pour les hommes) ou _NL_NAME_NAME_MS (titre pour les femmes)
qui renvoient des chaînes comme
« monsieur » ou
« madame » (pour des paramètres
régionaux relatifs au français). (D’autres noms
d’éléments sont dans <langinfo.h>.)
- LC_NUMERIC
- This category determines the formatting rules used for
nonmonetary numeric values—for example, the thousands separator and
the radix character (a period in most English-speaking countries, but a
comma in many other regions). It affects functions such as
printf(3), scanf(3), and strtod(3). This information
can also be read with the localeconv(3) function.
-
LC_PAPER (extension GNU, depuis la glibc 2.2)
- Modification des réglages relatifs aux dimensions de
la taille normalisée de papier (c’est-à-dire A4 ou US
Letter). Les applications ayant besoin des dimensions peuvent les obtenir
en utilisant nl_langinfo(3) pour récupérer les
éléments _NL_PAPER_WIDTH et _NL_PAPER_HEIGHT
non normalisés qui renvoient des valeurs int indiquant les
dimensions en millimètre.
-
LC_TELEPHONE (extension GNU, depuis la glibc
2.2)
- Modification des réglages décrivant les
formats à utiliser pour les services téléphoniques.
Les applications ayant besoin de ces renseignements peuvent utiliser
nl_langinfo(3) pour récupérer les
éléments non normalisés comme
_NL_TELEPHONE_INT_PREFIX (préfixe international
utilisé pour appeler les numéros selon les paramètres
régionaux) qui renvoie une chaîne comme
« 33 » (pour la France). (D’autres noms
d’éléments sont dans <langinfo.h>.)
- LC_TIME
- Cette catégorie définit les règles de
mise en forme utilisées pour les valeurs d'heure et de date. Par
exemple, la plupart des pays européens utilisent une horloge de
24 h, alors que les États-Unis utilisent une horloge de
12 h. Les paramètres de cette catégorie modifient les
fonctions telles que strftime(3) et strptime(3).
- LC_ALL
- Toutes les catégories ci-dessus.
If the second argument to
setlocale(3) is an empty string,
"", for the default locale, it is determined using the
following steps:
- (1)
- Si la variable d'environnement LC_ALL n'est pas
NULL, sa valeur est utilisée.
- (2)
- Si une variable d'environnement ayant le même nom
que les catégories mentionnées ci-dessus n’est pas
NULL, sa valeur est utilisée pour la catégorie en
question.
- (3)
- Si la variable d'environnement LANG n’est pas
NULL, sa valeur est utilisée.
Les valeurs concernant la mise en forme numérique sont disponibles dans
une structure
lconv renvoyée par la fonction
localeconv(3), déclarée de la manière
suivante :
struct lconv {
/* Informations numériques (non monétaires) */
char *decimal_point; /* Séparateur décimal */
char *thousands_sep; /* Séparateur des milliers */
char *grouping; /* Chaque élément représente le nombre de
chiffres dans un groupe ; les éléments avec
les indices les plus hauts sont placés à gauche.
Un élément ayant la valeur CHAR_MAX signifie
qu'aucun regroupement ne peut plus être fait.
Un élément avec la valeur 0 signifie que
l'élément précédent est utilisé pour tous les
groupes restant à gauche. */
/* Les champs restants sont pour les informations monétaires */
char *int_curr_symbol; /* First three chars are a currency
symbol from ISO 4217. Fourth char
is the separator. Fifth char
is '\0'. */
char *currency_symbol; /* Local currency symbol */
char *mon_decimal_point; /* Radix character */
char *mon_thousands_sep; /* Like thousands_sep above */
char *mon_grouping; /* Like grouping above */
char *positive_sign; /* Sign for positive values */
char *negative_sign; /* Sign for negative values */
char int_frac_digits; /* International fractional digits */
char frac_digits; /* Local fractional digits */
char p_cs_precedes; /* 1 if currency_symbol precedes a
positive value, 0 if succeeds */
char p_sep_by_space; /* 1 if a space separates
currency_symbol from a positive
value */
char n_cs_precedes; /* 1 if currency_symbol precedes a
negative value, 0 if succeeds */
char n_sep_by_space; /* 1 if a space separates
currency_symbol from a negative
value */
/* 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;
};
POSIX.1-2008 standardized a number of extensions to the locale API, based on
implementations that first appeared in glibc 2.3. These extensions are
designed to address the problem that the traditional locale APIs do not mix
well with multithreaded applications and with applications that must deal with
multiple locales.
Les extensions prennent la forme de nouvelles fonctions pour créer et
manipuler les objets de paramètres régionaux (
newlocale(3),
freelocale(3),
duplocale(3),
uselocale(3)) et plusieurs nouvelles bibliothèques avec le
suffixe « _l » (par exemple
toupper_l(3))
qui complètent les interfaces de programmation traditionnelles
dépendant des paramètres régionaux (par exemple
toupper(3)) pour permettre d’indiquer un objet de
paramètres régionaux qui devrait être pris en compte lors
de l’exécution de la fonction.
La variable d'environnement suivante est utilisée par
newlocale(3)
et
setlocale(3) et modifie donc tous les programmes
régionalisés sans permission particulière :
- LOCPATH
- A list of pathnames, separated by colons (':'), that should
be used to find locale data. If this variable is set, only the individual
compiled locale data files from LOCPATH and the system default
locale data path are used; any available locale archives are not used (see
localedef(1)). The individual compiled locale data files are
searched for under subdirectories which depend on the currently used
locale. For example, when en_GB.UTF-8 is used for a category, the
following subdirectories are searched for, in this order:
en_GB.UTF-8, en_GB.utf8, en_GB, en.UTF-8,
en.utf8, and en.
- /usr/lib/locale/locale-archive
- Chemin habituel par défaut de l'archive des
paramètres régionaux.
- /usr/lib/locale
- Chemin par défaut habituel des fichiers
compilés particuliers de paramètres régionaux.
POSIX.1-2001.
iconv(1),
locale(1),
localedef(1),
catopen(3),
gettext(3),
iconv(3),
localeconv(3),
mbstowcs(3),
newlocale(3),
ngettext(3),
nl_langinfo(3),
rpmatch(3),
setlocale(3),
strcoll(3),
strfmon(3),
strftime(3),
strxfrm(3),
uselocale(3),
wcstombs(3),
locale(5),
charsets(7),
unicode(7),
utf-8(7)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]> et
Jean-Paul Guillonneau <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]