Fonctions de localisation C - C localization functions

En informatique , les fonctions de localisation C sont un groupe de fonctions dans le langage de programmation C implémentant des routines de localisation de base. Les fonctions sont utilisées dans les programmes multilingues pour s'adapter aux paramètres régionaux spécifiques. En particulier, le mode d'affichage des nombres et de la devise peut être modifié. Ces paramètres affectent le comportement des fonctions d' entrée / sortie dans la bibliothèque C Standard.

Aperçu des fonctions

Les fonctions et types de localisation C sont définis dans locale.h (en - tête clocale en C ++).

Fonction La description
setlocale définit et obtient la locale C actuelle
localeconv renvoie les détails de formatage numérique et monétaire des paramètres régionaux actuels

Critique

Les fonctions de localisation standard C sont critiquées car l'état de localisation est stocké globalement. Cela signifie que dans un programme donné, toutes les opérations impliquant une locale ne peuvent utiliser qu'une seule locale à la fois. Par conséquent, il est très difficile d'implémenter des programmes qui utilisent plusieurs paramètres régionaux.

Les fonctions modifient le comportement de printf / scanf / strtod qui sont souvent utilisés pour écrire des données enregistrées dans un fichier ou dans d'autres programmes. Le résultat est qu'un fichier enregistré dans une locale ne sera pas lisible dans une autre locale, ou ne sera pas du tout lisible en raison d'hypothèses telles que "les nombres se terminent par des virgules". La plupart des logiciels à grande échelle obligent les paramètres régionaux à "C" (ou une autre valeur fixe) pour contourner ces problèmes.

Exemple

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

int main(void)
{
    /* Locale is set to "C" before this. This call sets it
       to the "current locale" by reading environment variables: */
    setlocale(LC_ALL, "");

    const struct lconv * const currentlocale = localeconv();

    printf("In the current locale, the default currency symbol is: %s\n",
        currentlocale->currency_symbol);

    return EXIT_SUCCESS;
}

Voir également

Les références