SETLOCALE(3) Manuel du programmeur Linux SETLOCALE(3)

setlocale - Définir les paramètres régionaux courants

#include <locale.h>
char *setlocale(int catégorie, const char *locale);

La fonction setlocale() permet de définir ou d'obtenir les paramètres régionaux courants du programme.

Si locale n'est pas NULL, les paramètres régionaux courants du programme sont modifiés en fonction des arguments. L'argument catégorie détermine quelle partie des paramètres régionaux courants du programme seront concernés par la modification.

Catégorie Paramètres impactés
LC_ALL Tous les paramètres régionaux
LC_ADDRESS Mise en forme des adresses et des items relatifs à la géographie (*)
LC_COLLATE Ordre de tri des chaînes
LC_CTYPE Classification des caractères
LC_IDENTIFICATION Métadonnées décrivant les paramètres régionaux (*)
LC_MEASUREMENT Paramètres liés aux mesures (système métrique et mesures US) (*)
LC_MESSAGES Messages localisables en langue d'origine
LC_MONETARY Mise en forme des valeurs monétaires
LC_NAME Mise en forme des titres pour les personnes (*)
LC_NUMERIC Mise en forme des valeurs numériques non monétaires
LC_PAPER Paramètres liés au format de papier standard (*)
LC_TELEPHONE Formats à utiliser pour les services de téléphonie (*)
LC_TIME Mise en forme des valeurs de date et heure

Les catégories avec une astérisque dans la table ci-dessus sont des extensions GNU. Pour plus d'informations sur ces catégories de paramètres régionaux, consultez locale(7).

L'argument locale est un pointeur sur une chaîne de caractères indiquant la configuration de la catégorie. Une telle chaîne peut être une constante bien connue, comme « C » ou « fr_FR » (voir plus bas) ou une chaîne opaque renvoyée par un autre appel précédent à setlocale().

Si locale est la chaîne vide (""), chaque partie des paramètres régionaux doit être modifiée en fonction des variables d'environnement. Les détails varient en fonction de l'implémentation. Pour la glibc, (quelle que soit la catégorie) la variable d'environnement LC_ALL est examinée dans un premier temps, puis c'est au tour de la variable d'environnement possédant le même nom que la catégorie (consultez la table ci-dessus) et c'est enfin celui de la variable LANG. C'est la première variable d'environnement définie qui est prise en compte. Si sa valeur n'est pas une spécification de paramètres régionaux valable, les paramètres régionaux courants ne sont pas modifiés, et setlocale() renvoie NULL.

Les paramètres régionaux « C » et « POSIX » sont portables et ils existent sur tous les systèmes compatibles.

Un nom de paramètres régionaux est typiquement de la forme langue[_territoire][.codage][@modificateur], où langue est un code linguistique ISO 639, territoire un code de pays ISO 3166 et codage un jeu de caractères ou un identifiant d'encodage comme ISO-8859-1 ou UTF-8. Pour obtenir la liste de tous les paramètres régionaux disponibles, utilisez la commande « locale -a » (voir locale(1)).

Si locale est NULL, les paramètres régionaux courants sont consultés, mais pas modifiés.

Au démarrage du programme principal, la valeur de paramètres régionaux portable « C » est sélectionnée par défaut. Un programme peut être rendu portable pour tous les paramètres régionaux en appelant :


setlocale(LC_ALL, "");

après l'initialisation du programme, puis :

  • en utilisant les valeurs renvoyées par un appel à localeconv(3) pour obtenir des informations dépendant des paramètres régionaux ;
  • en utilisant les fonctions de traitement des textes avec caractères larges ou multioctets si MB_CUR_MAX > 1 ;
  • en utilisant strcoll(3) et strxfrm(3) pour comparer les chaînes ; et
  • en utilisant wcscoll(3) et wcsxfrm(3) pour comparer les chaînes à caractères larges.

Un appel réussi à setlocale() renvoie une chaîne opaque correspondant aux paramètres régionaux. Cette chaîne peut être allouée statiquement. La chaîne renvoyée associée à la catégorie considérée permet (à l'aide d'un appel ultérieur à setlocale()) de restituer la partie correspondante des paramètres régionaux du processus. La valeur renvoyée est NULL si la demande ne peut pas aboutir.

Pour une explication des termes utilisés dans cette section, consulter attributes(7).

Interface Attribut Valeur
setlocale() Sécurité des threads MT-Unsafe const:locale env

POSIX.1-2001, POSIX.1-2008, C89, C99.

Les normes C ne spécifient que les catégories LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC et LC_TIME. POSIX.1 y ajoute LC_MESSAGES. Les autres catégories sont des extensions GNU.

locale(1), localedef(1), isalpha(3), localeconv(3), nl_langinfo(3), rpmatch(3), strcoll(3), strftime(3), charsets(7), locale(7)

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/.

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>, David Prévot <david@tilapin.org> et Lucien Gentis <lucien.gentis@waika9.com>

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 à debian-l10n-french@lists.debian.org.

22 mars 2021 GNU