SETLOCALE

Section: Manuel du programmeur Linux (3)
Updated: 21 juillet 2003
Index


NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
CONFORMITÉ
VOIR AUSSI
TRADUCTION

NOM

setlocale - Fixe la localisation courante.

SYNOPSIS

#include <locale.h>

char *setlocale (int categorie, const char * locale);

DESCRIPTION

La fonction setlocale() est utilisée pour indiquer ou demander la localisation courante du programme. Si locale n'est pas NULL, la localisation courante du programme est modifiée en fonction des arguments. L'argument categorie détermine quelle partie de la localisation sera concernée par la modification :
LC_ALL
toute la localisation,
LC_COLLATE
la mise en correspondance des expressions rationnelles (classes d'équivalence et intervalles), et le classement des chaînes de caractères,
LC_CTYPE
la classification de caractère, et les routines de conversions.
LC_MESSAGES
les messages en langue naturelle
LC_MONETARY
l'affichage des valeurs monétaires.
LC_NUMERIC
le symbole décimal (point, virgule, ...)
LC_TIME
la forme de la date et l'heure. L'argument locale est un pointeur sur une chaîne de caractères contenant la configuration de la categorie. 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 , chaque partie de la localisation doit être modifiée en fonction des variables d'environnement. Les détails d'implémentation varient. Pour la GlibC, d'abord (quelque soit la catégorie) la variable d'environnement LC_ALL est examinée, puis la variable d'environnement avec le même nom que la catégorie (LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME) et finalement la variable LANG. La première variable d'environnement existant est utilisée. Si sa valeur est n'est pas une spécification de localication valide, la localisation n'est pas modifiée, et setlocale renvoie NULL.
Les localisations C et POSIX sont portables, leur partie LC_CTYPE correspond au jeu de caractères ASCII 7 bits.
Un nom de localisation est typiquement de la forme langue[_territoire][.codeset][@modificateur], où la langue est un code linguistique ISO 639, le territoire un code de pays ISO 3166, et codeset un jeu de caractères ou un identificateur d'encodage, comme ISO-8859-1 ou UTF-8. Pour voir une liste de toutes les localisations disponibles, essayez "locale -a", cf. locale(1).
Si locale est NULL, la localisation courante est consultée, mais pas modifiée.
Au démarrage, la localisation portable C est sélectionnée par défaut. Un programme peut être rendu portable en appelant setlocale(LC_ALL, ) lors de son initialisation, en utilisant les valeurs renvoyées par localeconv() pour les valeurs dépendant de la localisation, en utilisation les fonctions multioctets et caractères larges pour traiter les chaines si MB_CUR_MAX > 1, et en utilisant strcoll(), wcscoll() ou strxfrm(), wcsxfrm() pour comparer les chaînes de caractères.

VALEUR RENVOYÉE

Un appel reussi à setlocale() renvoie une chaine correspondant à la localisation. Cette chaîne peut être allouée dans une zone statique. La chaine est renvoyée de telle manière qu'un appel ultérieur avec cette chaîne et la catégorie associée restituera cette partie de la localisation du processus. La valeur renovyée est NULL si la demande ne peut pas être honorée.

CONFORMITÉ

ANSI C, POSIX.1
Linux (c'est à dire la libc) supporte les localisations portables C et POSIX. Il y avait auparavant un support pour le Latin-1 européen ISO-8859-1 (par exemple dans la libc-4.5.21 et libc-4.6.27), ainsi que et le KOI-8 russe (plus précisement "koi-8r" dans la libc-4.6.27). Il suffisait alors d'initialiser la variable d'environnement LC_TYPE=ISO-8859-1 pour que isprint() fonctionne correctement. Désormais les européens non-anglicistes doivent peiner un peu plus pour installer les véritables fichiers de localisation.

VOIR AUSSI

TRADUCTION

Christophe Blaess, 1996-2003.