Funcions de localització C

De la Viquipèdia, l'enciclopèdia lliure
Funcions de localització C

TipusC header file (en) Tradueix Modifica el valor a Wikidata
Part deC standard library, Biblioteca estàndard de C++ i Biblioteca C POSIX Modifica el valor a Wikidata
Característiques tècniques
PlataformaC standard library

En informàtica, les funcions de localització C són un grup de funcions en el llenguatge de programació C que implementen rutines bàsiques de localització.[1][2] Les funcions s'utilitzen en programes multilingües per adaptar-se a la configuració regional específica. En particular, es pot modificar la manera de mostrar els números i la moneda. Aquests paràmetres afecten el comportament de les funcions d'entrada/sortida a la biblioteca estàndard C.[3]

Visió general de les funcions[modifica]

Les funcions i els tipus de localització C es defineixen alocale.h (clocalecapçalera en C++).[4][5]

Funció Descripció
setlocale estableix i obté la configuració regional C actual
localconv retorna detalls de format numèric i monetari de la configuració regional actual

Crítica[modifica]

Les funcions de localització estàndard C són criticades perquè l'estat de localització s'emmagatzema globalment. Això vol dir que en un programa donat totes les operacions que involucren un local només poden utilitzar un local alhora. Com a resultat, és molt difícil implementar programes que utilitzen més d'una configuració regional.[6]

Les funcions alteren el comportament de printf/scanf/strtod que sovint s'utilitzen per escriure dades desades en un fitxer o en altres programes. El resultat és que un fitxer desat en una configuració regional no es podrà llegir en una altra configuració regional o no es podrà llegir en absolut a causa de suposicions com ara "els números acaben en caràcters de coma". La majoria de programari a gran escala obliga la configuració regional a "C" (o un altre valor fix) per solucionar aquests problemes.

Exemple[modifica]

#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;
}

Referències[modifica]

  1. ISO/IEC 9899:1999 specification (en anglès). 
  2. Prata, Stephen. C primer plus (en anglès). Sams Publishing, 2004. ISBN 0-672-32696-5. 
  3. «ISO/IEC 9899:201x» (en anglès), 12-04-2011. Arxivat de l'original el 29 March 2018.
  4. «locale.h» (en anglès). utas.edu.au. infosys. Arxivat de l'original el 4 June 2012. [Consulta: 14 setembre 2011].
  5. «openbsd/src» (en anglès). GitHub. [Consulta: 9 abril 2018].
  6. «The Standard C Locale and the Standard C++ Locales» (en anglès). Rogue Wave Software, Inc.. Arxivat de l'original el 19 February 2020. [Consulta: 10 novembre 2011].