LOCALE(7)

NOME
locale - Descrizione del supporto multi-lingue

SINTASSI
#include <locale.h>

DESCRIZIONE
Una localizzazione è un insieme di regole linguistiche e culturali che coprono campi come la lingua dei messaggi, diversi insiemi di caratteri, convenzioni lessicografiche, ecc. Un programma deve poter determinare la sua localizzazione e agire di conseguenza per poter essere adattato a culture diverse.

L'header <locale.h> dichiara i tipi di dati, funzioni e macro utili a questo scopo.

Le funzioni che vengono dichiarate sono setlocale(3) per impostare la localizzazione attuale e localeconv(3) per ottenere informazioni sulla formattazione dei numeri.

Le differenti categorie di informazioni sulla localizzazione di cui un programma potrebbe aver bisogno vengono dichiarate come macro. Usandole come primo argomento alla funzione setlocale(3) è possibile impostare queste variabili alla localizzazione desiderata:

LC_ADDRESS (GNU extension, since glibc 2.2)
    Cambia le impostazioni che definiscono i formati usati per specificare luoghi ed elementi di tipo geografico (p.es. indirizzi postali). Le applicazioni che necessitano di questo tipo di informazioni possono usare nl_langinfo(3) per richiamare elementi non standard, come _NL_ADDRESS_COUNTRY_NAME (nome del paese, nella lingua della localizzazione) e _NL_ADDRESS_LANG_NAME (nome della lingua, nella lingua della localizzazione, che restituisce stringhe come "Deutschland" e "Deutsch" (per le localizzazioni della lingua tedesca). (Altri nomi di elementi sono elencati in <langinfo.h>.)

LC_COLLATE
    Questa categoria controlla le regole di collazione usate per l'ordinamento e le espressioni regolari, comprese le classi di equivalenza dei caratteri e gli elementi di collazione multicarattere. Questa categoria di localizzazione modifica il comportamento delle funzioni strcoll(3) e strxfrm(3), che servono per confrontare stringhe nell'alfabeto locale. Ad esempio, la «ß» tedesca viene ordinata come «ss».

LC_CTYPE
    Questa categoria determina l'interpretazione delle sequenze di byte come caratteri (p.es. caratteri singoli o multibyte), le classificazioni dei caratteri (p.es. lettera o cifra), e il comportamento delle classi di caratteri. Modifica il comportamento delle funzioni che maneggiano e classificano caratteri, come isupper(3) e toupper(3), e le funzioni per caratteri multibyte come mblen(3) o wctomb(3).

LC_IDENTIFICATION (estensione GNU, a partire da glibc 2.2)
    Cambia le impostazioni inerenti ai metadati per la localizzazione. Le applicazioni che necessitano di questa informazione possono usare nl_langinfo(3) per richiamare elementi non standard, come _NL_IDENTIFICATION_TITLE (titolo di questo documento di localizzazione) e _NL_IDENTIFICATION_TERRITORY (territorio geografico al quale si applica il documento), che potrebbe restituire "English locale for the USA" e "USA". (Altri nomi di elementi sono elencati in <langinfo.h>.)

LC_MONETARY
    Questa categoria determina la formattazione usata per i valori numerici di tipo monetario. cambia l'informazione restituita da localeconv(3), che descrive il modo in cui i numeri vengono normalmente stampati, compresi dettagli come l'uso del punto o della virgola decimale. Questa informazione è usata internamente dalla funzione strfmon(3).

LC_MESSAGES
    Questa categoria influisce sulla lingua nella quale i messaggi vengono mostrati e la forma delle risposte positive o negative. La libreria C di GNU contiene le funzioni gettext(3), ngettext(3), e rpmatch(3) per facilitare l'impiego di queste informazioni. La famiglia di funzioni GNU gettext rispetta anche la variabile d'ambiente LANGUAGE (che contiene un elenco di localizzazioni, separate da virgole) se la categoria è stata impostata ad una localizzazione valida diversa da "C". Questa categoria influisce anche sul comportamento di catopen(3).

LC_MEASUREMENT (GNU extension, since glibc 2.2)
    Cambia le impostazioni relative al sistema di misura nella localizzazione (cioè, metrico o sistema consuetudinario statunitense). Le applicazioni possono usare nl_langinfo(3) per richiamare l'elemento non standard _NL_MEASUREMENT_MEASUREMENT che restituisce un puntatore a un carattere che ha il valore 1 (metrico) o 2 (sistema consuetudinario statunitense).

LC_NAME (GNU extension, since glibc 2.2)
    Cambia le impostazioni che definiscono i formati usati per rivolgersi alle persone. Le applicazioni possono usare nl_langinfo(3) per richiamare elementi non standard, come gli elementi _NL_NAME_NAME_MR (titolo generico per gli uomini) e _NL_NAME_NAME_MS (titolo generico per le donne), che restituiscono stringhe come "Herr" e "Frau" (per le localizzazioni in lingua tedesca ["Signor" e "Signora" per quelle in lingua italiana]). Altri nomi di elementi sono elencati in <langinfo.h>.)

LC_NUMERIC
    Questa categoria determina le regole di formattazione usate per valori numerici non monetari —per esempio, il separatore delle migliaia e il carattere di radice (un punto nella maggior parte dei paesi di lingua inglese, una virgola in molte altre regioni). Ingfluisce su funzioni come printf(3), scanf(3), e strtod(3). Queste informazioni possono anche essere lette tramite la funzione localeconv(3).

LC_PAPER (estensione GNU, a partire da glibc 2.2)
    Cambia le impostazioni relative alle dimensioni dei formati standard della carta (p.es., US letter o A4). Le applicazioni che necessitano di queste dimensioni possono ottenerle usando nl_langinfo(3) per richiamare gli elementi non standard _NL_PAPER_WIDTH e _NL_PAPER_HEIGHT, che restitiuscono valori interi che definiscono le dimensioni in millimetri.

LC_TELEPHONE (estensione GNU, a partire da glibc 2.2)
    Cambia le impostazioni che descrivono i formati da usare per i servizi telefonici. Le applicazioni che necessitano di questa informazione possono usare nl_langinfo(3) per richiamare lementi non standard, come _NL_TELEPHONE_INT_PREFIX (prefisso internazionale usato per chiamare numeri in questa localizzazione), che restituiscono una stringa come, per esempio, "49" (per la Germania ["39" per l'Italia]). Altri nomi di elementi sono elencati in <langinfo.h>.

LC_TIME
    Questa categoria controlla la formattazione usata per valori di data e ora. Per esempio, in buona parte d'Europa si usano le 24 ore, a differenza delle 12 ore usate negli Stati Uniti. L'impostazione di questa categoria influisce sul comportamento di funzioni come strftime(3) e strptime(3).

LC_ALL
    Vale per tutte le macro precedenti.

Se il secondo argomento a setlocale(3) è la stringa vuota "", allora la localizzazione predefinita è determinata come segue:

1.  Se è presente una variabile d'ambiente non nulla LC_ALL, viene usato il valore di LC_ALL.

2.  Se una variabile d'ambiente con lo stesso nome di una delle categorie precedenti esiste ed è non nulla, il suo valore viene usato per quella categoria.

3.  Se è presente una variabile d'ambiente non nulla LANG, viene usato il valore di LANG.

I valori che descrivono la formattazione locale dei numeri sono disponibili in una struct lconv restituita dalla funzione localeconv(3), che è così dichiarata:
struct lconv {
    /* Numeric (nonmonetary) information */
    char *decimal_point;     /* Radix character */
    char *thousands_sep;     /* Separator for digit groups to left
                                of radix character */
    char *grouping; /* Each element is the number of digits in a
                       group; elements with higher indices are
                       further left.  An element with value CHAR_MAX
                       means that no further grouping is done.  An
                       element with value 0 means that the previous
                       element is used for all groups further left. */
    /* Remaining fields are for monetary information */
    char *int_curr_symbol;   /* First three chars are a currency symbol
                                from ISO 4217.  Fourth char is the
                                separator.  Fifth char is '\0'. */
    char *currency_symbol;   /* Local currency symbol */
    char *mon_decimal_point; /* Radix character */
    char *mon_thousands_sep; /* Like thousands_sep above */
    char *mon_grouping;      /* Like grouping above */
    char *positive_sign;     /* Sign for positive values */
    char *negative_sign;     /* Sign for negative values */
    char  int_frac_digits;   /* International fractional digits */
    char  frac_digits;       /* Local fractional digits */
    char  p_cs_precedes;     /* 1 if currency_symbol precedes a
                                positive value, 0 if succeeds */
    char  p_sep_by_space;    /* 1 if a space separates currency_symbol
                                from a positive value */
    char  n_cs_precedes;     /* 1 if currency_symbol precedes a
                                negative value, 0 if succeeds */
    char  n_sep_by_space;    /* 1 if a space separates currency_symbol
                                from a negative value */
    /* Positive and negative sign positions:
       0 Parentheses surround the quantity and currency_symbol.
       1 The sign string precedes the quantity and currency_symbol.
       2 The sign string succeeds the quantity and currency_symbol.
       3 The sign string immediately precedes the currency_symbol.
       4 The sign string immediately succeeds the currency_symbol. */
    char  p_sign_posn;
    char  n_sign_posn;
};

  Estensioni POSIX.1-2008 all'API della localizzazione
POSIX.1-2008 ha fissato norme relative a parecchie estensioni all'API, sulla base di implementazioni realizzate per la prima volta nella versione 2.3 della libreria GNU C. Queste estensioni sono progettate per cercare di risolvere il problema che la tradizionale API di localizzazione non è adeguatamente compatibile con applicazioni multithread [che vengono eseguite in parallelo su più di una CPU] e con applicazioni che devono gestire più di una localizzazione alla volta. Le estensioni prendono la forma di nuove funzioni per creare e manipolare oggetti di localizzazione (newlocale(3), freelocale(3), duplocale(3), e uselocale(3)) e diverse nuove funzioni di libreria col suffisso "_l" (p.es., toupper_l(3)) che estendono le API dipendenti dalla localizzazione (p.es., toupper(3)) per consentire la specificazione di un oggetto di localizzazione che dovrebbe applicarsi quando si esegue la funzione.

AMBIENTE
La seguente variabile d'ambiente è usata da newlocale(3) e setlocale(3), e quindi influisce su tutti i programmi localizzati:

LOCPATH
    Una lista di nomi di percorso, separati da due punti (':'), da usare per trovare i dati della localizzazione. Se questa variabile è impostata, vengono usati solo i singoli file di dati della localizzazione presenti in LOCPATH e il percorso predefinito di sistema per i dati della localizzazione; non viene usato nessuno degli archivi della localizzazione disponibili. I singoli file dei dati della localizzazione vengono cercati nelle sottodirectory che dipendono dalla localizzazione correntemente usata. Per esempio, quando viene usato en_GB.UTF-8 per una categoria, viene fatta la ricerca nelle seguenti sottodirectory, in quest'ordine: en_GB.UTF-8, en_GB.utf8, en_GB, en.UTF-8, en.utf8, ed en.

CONFORME A
POSIX.1-2001.

VEDERE ANCHE
locale(1), localedef(1), catopen(3), gettext(3), localeconv(3), mbstowcs(3), newlocale(3), ngettext(3), nl_langinfo(3), rpmatch(3), setlocale(3), strcoll(3), strfmon(3), strftime(3), strxfrm(3), uselocale(3), wcstombs(3), locale(5), charsets(7), unicode(7), utf-8(7)

COLOPHON
Questa pagina fa parte del rilascio 3.73 del progetto Linux man-pages. Una descrizione del progetto, le istruzioni per la segnalazione degli errori, e l'ultima versione di questa pagina si trova su http://www.kernel.org/doc/man-pages/. La versione italiana fa parte del pacchetto man-pages-it v. 3.73, a cura di: ILDP "Italian Linux Documentation Project" http://www.pluto.it/ildp
Per la traduzione in italiano si può fare riferimento a http://www.pluto.it/ildp/collaborare/
Segnalare eventuali errori di traduzione a ildp@pluto.it