Provided by: manpages-fr-dev_4.15.0-9_all bug

NOM

       newlocale, freelocale - Créer, modifier et libérer un objet de paramètres régionaux

SYNOPSIS

       #include <locale.h>

       locale_t newlocale(int category_mask, const char *locale,
                          locale_t base);
       void freelocale(locale_t locobj);

   Exigences    de    macros    de   test   de   fonctionnalités   pour   la   glibc   (consulter
   feature_test_macros(7)) :

       newlocale(), freelocale() :
           Depuis la version 2.10 de la glibc :
               _XOPEN_SOURCE >= 700
           Avant la version 2.10 de la glibc :
               _GNU_SOURCE

DESCRIPTION

       La fonction newlocale() crée un nouvel objet de paramètres régionaux ou modifie  un  objet
       existant,  en  renvoyant  une  référence  vers  le  nouvel  objet ou l’objet modifié comme
       résultat de la fonction. L’appel crée un nouvel objet ou  modifie  un  objet  existant  en
       fonction de la valeur de base :

       –  si base est (locale_t) 0, un nouvel objet est créé ;

       –  si  base  indique  un  objet  de paramètres régionaux valable existant (c’est-à-dire un
          objet renvoyé par un précédent appel de newlocale() ou duplocale(3)), alors  cet  objet
          est  modifié  par l’appel. Si l’appel réussit, le contenu de base n’est pas garanti (en
          particulier, l’objet indiqué par base pourrait être libéré et un  nouvel  objet  créé).
          Par  conséquent, l’appelant devrait s’assurer de ne plus utiliser base avant l’appel de
          newlocale() et devrait ensuite se rapporter à l’objet modifié à l’aide de la  référence
          renvoyée  comme  résultat  de  la fonction. Si l’appel échoue, le contenu de base reste
          valable et sans modification.

       Si  base  est  l’objet  spécial  de  paramètres  régionaux   LC_GLOBAL_LOCALE   (consultez
       duplocale(3)), ou n’est pas (locale_t) 0 ni un identifiant d’objet de paramètres régionaux
       valable, le comportement est non défini.

       L’argument category_mask est un masque binaire  indiquant  les  catégories  de  paramètres
       régionaux  à  définir  dans  un objet de paramètres régionaux nouvellement créé ou modifié
       dans un objet existant. Le  masque  est  construit  avec  un  OU  binaire  des  constantes
       LC_ADDRESS_MASK,       LC_CTYPE_MASK,       LC_COLLATE_MASK,       LC_IDENTIFICATION_MASK,
       LC_MEASUREMENT_MASK, LC_MESSAGES_MASK,  LC_MONETARY_MASK,  LC_NUMERIC_MASK,  LC_NAME_MASK,
       LC_PAPER_MASK,  LC_TELEPHONE_MASK  et  LC_TIME_MASK.  Alternativement, le masque peut être
       défini comme LC_ALL_MASK, ce qui est équivalent à effectuer un OU binaire sur  toutes  les
       constantes précédentes.

       Pour  chaque catégorie indiquée dans category_mask, les données de paramètres régionaux de
       locale seront utilisées dans l’objet renvoyé  par  newlocale().  Si  un  nouvel  objet  de
       paramètres  régionaux  est  en cours de création, les données de toutes les catégories non
       indiquées dans  category_mask  sont  prises  dans  les  paramètres  régionaux  par  défaut
       ("POSIX").

       Les  valeurs  prédéfinies suivantes de locale sont définies pour toutes les catégories qui
       peuvent être indiquées dans category_mask :

       "POSIX"
              Un environnement de paramètres régionaux minimal pour les programmes en langage C.

       "C"    Équivalent à "POSIX".

       ""     Un environnement natif défini pour l’implémentation correspondant aux  valeurs  des
              variables d’environnement LC_* et LANG (consultez locale(7)).

   freelocale()
       La  fonction  freelocale()  désalloue  les  ressources  associées  à  locobj,  un objet de
       paramètres régionaux renvoyé par un appel à newlocale() ou  duplocale(3).  Si  locobj  est
       LC_GLOBAL_LOCALE  ou  n’est pas un identifiant d’objet valable de paramètres régionaux, le
       résultat n’est pas défini.

       Une fois qu’un objet de paramètres régionaux à été libéré, le programme  ne  devrait  plus
       l’utiliser.

VALEUR RENVOYÉE

       On  success,  newlocale()   returns  a  handle  that can be used in calls to duplocale(3),
       freelocale(), and other functions that take a locale_t  argument.  On  error,  newlocale()
       returns (locale_t) 0, and sets errno to indicate the error.

ERREURS

       EINVAL Au  moins  un  bit  de  category_mask  ne correspond pas à une catégorie valable de
              paramètres régionaux.

       EINVAL locale est NULL.

       ENOENT locale n’est pas un pointeur de chaîne vers des paramètres régionaux valables.

       ENOMEM Pas assez de mémoire pour créer un objet de paramètres régionaux.

VERSIONS

       Les fonctions newlocale() et freelocale() sont apparues pour  la  première  fois  dans  la
       version 2.3 de la bibliothèque C de GNU.

CONFORMITÉ

       POSIX.1-2008.

NOTES

       Each locale object created by newlocale()  should be deallocated using freelocale().

EXEMPLES

       Le programme suivant prend jusqu’à deux arguments en ligne de commande, identifiant chacun
       des paramètres régionaux. Le  premier  argument  est  nécessaire  et  sert  à  définir  le
       catégorie  LC_NUMERIC  dans  un  objet  de  paramètres régionaux créé avec newlocale(). Le
       second argument est facultatif et sert à  définir  la  catégorie  LC_TIME  de  l’objet  de
       paramètres régionaux s’il est présent.

       Après  création  et  initialisation  de  l’objet  de  paramètres  régionaux,  le programme
       l’applique en utilisant uselocale(3) et  teste  ensuite  l’effet  de  la  modification  de
       paramètres régionaux en :

       1. affichant  un nombre à virgule avec une partie décimale. Cette sortie sera affectée par
          le réglage LC_NUMERIC. Dans de nombreux paramètres régionaux de langues européennes, le
          partie  décimale du nombre est séparée de la partie entière par une virgule, plutôt que
          par un point ;

       2. affichant la date. Le format et la langue de sortie  seront  affectés  par  le  réglage
          LC_TIME.

       Les sessions suivantes d’interpréteur de commandes montrent des exemples d’exécution de ce
       programme.

       Définir la catégorie LC_NUMERIC à fr_FR (français) :

           $ ./a.out fr_FR
           123456,789
           Fri Mar  7 00:25:08 2014

       Définir la catégorie LC_NUMERIC à  fr_FR  (français)  et  la  catégorie  LC_TIME  à  it_IT
       (italien) :

           $ ./a.out fr_FR it_IT
           123456,789
           ven 07 mar 2014 00:26:01 CET

       Indiquer  un  réglage  LC_TIME  de  chaîne  vide,  ce qui force la valeur à être prise des
       réglages de la variable  d’environnement  (qui  est  ici  indiquée  par  mi_NZ,  maori  de
       Nouvelle-Zélande) :

           $ LC_ALL=mi_NZ ./a.out fr_FR ""
           123456,789
           Te Paraire, te 07 o Poutū-te-rangi, 2014 00:38:44 CET

   Source du programme
       #define _XOPEN_SOURCE 700
       #include <stdio.h>
       #include <stdlib.h>
       #include <locale.h>
       #include <time.h>

       #define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \
                               } while (0)

       int
       main(int argc, char *argv[])
       {
           char buf[100];
           time_t t;
           size_t s;
           struct tm *tm;
           locale_t loc, nloc;

           if (argc < 2) {
               fprintf(stderr, "Utilisation : %s locale1 [locale2]\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           /* Create a new locale object, taking the LC_NUMERIC settings
              from the locale specified in argv[1]. */

           loc = newlocale(LC_NUMERIC_MASK, argv[1], (locale_t) 0);
           if (loc == (locale_t) 0)
               errExit("newlocale");

           /* If a second command-line argument was specified, modify the
              locale object to take the LC_TIME settings from the locale
              specified in argv[2]. We assign the result of this newlocale()
              call to 'nloc' rather than 'loc', since in some cases, we might
              want to preserve 'loc' if this call fails. */

           if (argc > 2) {
               nloc = newlocale(LC_TIME_MASK, argv[2], loc);
               if (nloc == (locale_t) 0)
                   errExit("newlocale");
               loc = nloc;
           }

           /* Apply the newly created locale to this thread. */

           uselocale(loc);

           /* Test effect of LC_NUMERIC. */

           printf("%8.3f\n", 123456.789);

           /* Test effect of LC_TIME. */

           t = time(NULL);
           tm = localtime(&t);
           if (tm == NULL)
               errExit("time");

           s = strftime(buf, sizeof(buf), "%c", tm);
           if (s == 0)
               errExit("strftime");

           printf("%s\n", buf);

           /* Free the locale object. */

           uselocale(LC_GLOBAL_HANDLE);    /* So 'loc' is no longer in use */
           freelocale(loc);

           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       locale(1), duplocale(3), setlocale(3), uselocale(3), locale(5), locale(7)

COLOPHON

       Cette  page  fait partie de la publication 5.13 du projet man-pages Linux. Une description
       du projet et des instructions pour signaler des anomalies et la dernière version de  cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

       La  traduction  française  de  cette  page  de  manuel  a  été créée par Christophe Blaess
       <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <stephan.rafin@laposte.net>,  Thierry
       Vignaud  <tvignaud@mandriva.com>,  François Micaux, Alain Portal <aportal@univ-montp2.fr>,
       Jean-Philippe   Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)    <jean-
       luc.coulon@wanadoo.fr>,    Julien    Cristau    <jcristau@debian.org>,    Thomas   Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau  <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis
       Barbier <barbier@debian.org> et David Prévot <david@tilapin.org>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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 à ⟨debian-l10n-french@lists.debian.org⟩.