LOCALE(7)

NOM
locale - Description du support multilingue

SYNOPSIS
#include <locale.h>

DESCRIPTION
Les paramètres régionaux (ou locale, en anglais) constituent un ensemble de règles linguistiques et culturelles. Ceci 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.

Le fichier d'en-tête <locale.h> déclare les types de données, les fonctions et les macros utilisés pour ces tâches.

Les fonctions qu'il déclare sont setlocale(3) pour définir ces paramètres 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 fixer l'une de ces informations :

LC_COLLATE
    est utilisée pour modifier le comportement des fonctions strcoll(3) et strxfrm(3), qui permettent les comparaisons de chaînes dans l'alphabet local. Par exemple, le double-s allemand est ordonné comme « ss ».

LC_CTYPE
    permet de modifier le comportement des fonctions de manipulation et 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(33).

LC_MONETARY
    modifie les informations renvoyées par localeconv(3) pour décrire 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 par la fonction strfmon(3).

LC_MESSAGES
    configure la langue utilisée pour afficher les messages, et la saisie de réponses affirmatives ou négatives. La glibc contient les fonctions gettext(3), ngettext(3), et rpmatch(3) pour aider à utiliser ces données. Les fonctions de la famille GNU gettext obéissent aussi à la variable d'environnement LANGUAGE.

LC_NUMERIC
    modifie les informations utilisées par les fonctions des familles printf(3) et scanf(3), lorsqu'elles doivent respecter les paramètres régionaux de l'utilisateur. Ces données peuvent également être obtenues avec la fonction localeconv(3).

LC_TIME
    modifie le comportement de la fonction strftime(3) pour afficher l'heure dans un format adéquat. Par exemple, la plupart des pays d'Europe utilise un format horaire sur 24 heures, alors que les USA utilisent un format sur 12 heures.

LC_ALL
    regroupe toutes les catégories ci-dessus.

Si le second argument de la fonction setlocale(3) est une chaîne de caractères vide, "", ceci correspond aux paramètres régionaux par défaut, déterminés par les étapes suivantes :

1.  Si la variable d'environnement LC_ALL n'est pas vide, sa valeur est utilisée.

2.  Si une variable d'environnement ayant le même nom que les catégories mentionnées ci-dessus est non vide, sa valeur est utilisée pour la catégorie en question.

3.  Si la variable d'environnement LANG est non vide, sa valeur est utilisée.

Les valeurs concernant la mise en forme numérique sont disponibles dans une structure struct lconv, renvoyée par la fonction localeconv(3), déclarée ainsi :
struct lconv {
  /* -------- Informations numériques (non-monétaires) ------- */
  char *decimal_point;    /* Séparateur décimal */
  char *thousands_sep;    /* Séparateur des milliers */
  char *grouping; /* Cette chaîne de caractères contient une
                     liste de nombres, séparés par des
                     point-virgules. Chaque élément indique le
                     nombre de chiffres utilisé pour ce groupe.
                     Les éléments d'indice les plus élevés
                     correspondent aux groupes les plus à gauche.
                     Un élément de valeur CHAR_MAX signifie
                     l'arrêt du groupement.
                     Un élément de valeur 0 signifie que l'élément
                     précédent est répété pour tous les groupes
                     plus à gauche.
                     Ndt : c'est pas clair ?
                     Ben, la V.O. non plus ! ;-) */
  /* ----------------- Informations monétaires ---------------- */
  char *int_curr_symbol;    /* Les trois premiers caractères
                               correspondent au symbole monétaire
                               d'après ISO 4217. Le quatrième
                               symbole est le séparateur,
                               le cinquième est '\0'. */
  char *currency_symbol;    /* Symbole monétaire local. */
  char *mon_decimal_point;  /* Caractère séparateur décimal */
  char *mon_thousands_sep;  /* Caract. séparateur milliers */
  char *mon_grouping;       /* Comme 'grouping' (ci-dessus) */
  char *positive_sign;      /* Signe pour valeurs positives */
  char *negative_sign;      /* Signe pour valeurs négatives */
  char  int_frac_digits;    /* Int'l fractional digits. */
  char  frac_digits;        /* Local fractional digits. */
  char  p_cs_precedes;      /* 1 si le symbole monétaire précède
                               les valeurs positives, 0 s'il
                               les suit */
  char  p_sep_by_space;     /* 1 si un espace sépare le symbole
                               monétaire d'une valeur + */
  char  n_cs_precedes;      /* 1 si le symbole monétaire précède
                               les valeurs négatives, 0 s'il
                               les suit */
  char  n_sep_by_space;     /* 1 si un espace sépare le symbole
                               monétaire d'une valeur - */
  /* Positions des signes plus et moins :
     0 Parenthèses autour de la valeur et du symbole monétaire.
     1 Le signe précède la valeur et le symbole monétaire.
     2 Le signe suit la valeur et le symbole monétaire.
     3 Le signe précède immédiatement le symbole monétaire.
     4 Le signe suit immédiatement le symbole monétaire. */
  char  p_sign_posn;
  char  n_sign_posn;
};

CONFORMITÉ
POSIX.1-2001. Les fonctions de la bibliothèque GNU gettext sont décrites dans le document LI18NUX2000.

VOIR AUSSI
locale(1), localedef(1), gettext(3), localeconv(3), ngettext(3), nl_langinfo(3), rpmatch(3), setlocale(3), strcoll(3), strfmon(3), strxfrm(3), strftime(3)

TRADUCTION

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 20 octobre 1996 et révisée le 22 décembre 2007.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 7 locale ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.