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 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(3)
pour les valeurs dépendant de la localisation,
en utilisation les fonctions multioctets et caractères larges
pour traiter les chaînes si
MB_CUR_MAX > 1,
et en utilisant
strcoll(3),
wcscoll(3)
ou
strxfrm(3),
wcsxfrm(3)
pour comparer les chaînes de caractères.