Une locale, c'est un regroupement d'informations de localisation. La norme en définit deux; une qui est active au début du programme et tant qu'on ne l'a pas changé explicitement et qui s'appelle "C", l'autre qui est la locale par défaut du système et qui n'a pas de nom. Une implémentation peut ajouter d'autres locales à ces deux là.
Pour permettre un choix plus fin, la norme subdivise les informations de localisation en catégories. Il y a 5 catégories standards:
Le choix de la locale à utiliser se fait avec setlocale(). Une fois une locale ainsi choisie, une série d'autres fonctions adaptent leur comportement en fonction. Les informations concernant le formattage des quantités monétaires et des autres nombres ne sont que très partiellement prises en compte par les fonctions de la bibliothèque standard, un programme qui veut les utiliser plus complètement doit utiliser le résultat de localeconv() et effectuer le formattage lui-même.
L'absence de isdigit() et isxdigit() dans la liste ci-dessus n'est pas une erreur.
Structures de données | |
struct | lconv |
description des informations de localisation Plus de détails... | |
Macros | |
#define | NULL |
pointeur nul | |
#define | LC_ALL |
toutes les informations de localisation | |
#define | LC_COLLATE |
informations concernant l'ordre | |
#define | LC_CTYPE |
informations concernant la classification des caractères. | |
#define | LC_MONETARY |
informations concernant la monnaie | |
#define | LC_NUMERIC |
informations concernant l'écriture des nombre | |
#define | LC_TIME |
informations concernant le temps | |
Fonctions | |
char * | setlocale (int category, const char *locale) |
indique quelles informations de localisation sont à prendre en compte. | |
struct lconv * | localeconv (void) |
récupère les informations culturelles |
#define LC_ALL |
Comme premier argument de setlocale() indique que toutes les informations de localisation sont à prendre en compte.
#define LC_COLLATE |
Comme premier argument de setlocale() indique que les informations de localisation concernant l'ordre des chaînes sont à prendre en compte. C'est ces informations qui permettent à une locale pour le français d'ordonner des chaînes d'abord en ignorant les accents ou à une locale pour l'espagnol de traiter correctement ll et ch.
Ces informations ne sont pas accessibles en dehors des fonctions qui les utilisent: strcoll() et strxfrm().
#define LC_CTYPE |
Comme premier argument de setlocale() indique que les informations de localisation concernant la gestion des caractères -- classification et traitement des caractères multibytes -- sont à prendre en compte.
Ces informations ne sont pas accessibles en dehors des fonctions qui les utilisent.
isalnum(), isalpha(), iscntrl(), isgraph(), islower(), isprint(), ispunct(), isspace(), isupper(), tolower(), toupper() sont influencées par la classification.
#define LC_MONETARY |
Comme premier argument de setlocale() indique que les informations de localisation concernant la monnaie sont à prendre en compte.
#define LC_NUMERIC |
Comme premier argument de setlocale() indique que les informations de localisation concernant l'écriture des nombres sont à prendre en compte.
#define LC_TIME |
Comme premier argument de setlocale() indique que les informations de localisation concernant la date et l'heure sont à prendre en compte.
Ces informations ne sont pas accessibles en dehors de la fonction qui les utilise: strftime().
#define NULL |
Cette macro contient une constante de pointeur nul. Des valeurs populaires sont 0, 0L, (void*)0.
Voir stddef.h pour plus d'informations.
struct lconv* localeconv | ( | void | ) | [read] |
lconv
avec les informations culturelles en cours.
char* setlocale | ( | int | category, | |
const char * | locale | |||
) |
category
indique quels informations culturelles sont à prendre en compte (voir la description des macros LC_ALL
, LC_COLLATE
, LC_CTYPE
, LC_MONETARY
, LC_NUMERIC
, LC_TIME
; d'autres macros peuvent être définies par l'implémentation).
locale
indique quel environnement doit devenir actif. Les valeurs possibles dépendent de l'implémentation, mais les valeurs suivantes doivent être possibles:
NULL
indique qu'il ne faut pas changer l'environnement, mais simplement retourner une chaîne décrivant la situation actuelle.
NULL
si la demande ne peut pas être honorée,
category
pour revenir dans le même environnement.