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 (estensione GNU, a partire da 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. Sui sistemi basati su glibc, questa categoria determina anche le regole di traslitterazione dei caratteri per iconv(1) e iconv(3). 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 (estensione GNU, a partire da 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 (estensione GNU, a partire da 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
    This category determines the formatting rules used for nonmonetary numeric values—for example, the thousands separator and the radix character (a period in most English-speaking countries, but a comma in many other regions). It affects functions such as printf(3), scanf(3), and strtod(3). This information can also be read with the localeconv(3) function.

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.

If the second argument to setlocale(3) is an empty string, "", for the default locale, it is determined using the following steps:

(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 {

    /* Informazioni numeriche (non monetarie) */

       char *decimal_point;     /* Carattere radice (separatore decimale) */
       char *thousands_sep;     /* Separatore per gruppi di cifre alla sinistra
                                    del carattere radice */
       char *grouping;     /* Ciascun elemento rappresenta il numero di
                               cifre in un gruppo; elementi con indici più alti
                               sono a sinistra.  Un elemento con valore
                               CHAR_MAX significa che non vengono fatti ulteriori
                               raggruppamenti.  Un elemento con valore 0 significa
                               che il precedente elemento è usato per
                               all groups alla sinistra. */

        /* /
     I campi rimanenti sono per informazioni monetarie */

        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 standardized a number of extensions to the locale API, based on implementations that first appeared in glibc 2.3. These extensions are designed to address the problem that the traditional locale APIs do not mix well with multithreaded applications and with applications that must deal with multiple locales.

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 senza privilegi localizzati:

LOCPATH
    A list of pathnames, separated by colons (':'), that should be used to find locale data. If this variable is set, only the individual compiled locale data files from LOCPATH and the system default locale data path are used; any available locale archives are not used (see localedef(1)). The individual compiled locale data files are searched for under subdirectories which depend on the currently used locale. For example, when en_GB.UTF-8 is used for a category, the following subdirectories are searched for, in this order: en_GB.UTF-8, en_GB.utf8, en_GB, en.UTF-8, en.utf8, and en.

FILE

/usr/lib/locale/locale-archive
    Ordinaria posizione predefinita dell'archivio della localizzazione.

/usr/lib/locale
    Ordinario percorso predefinito per i singoli file compilati della localizzazione.

STANDARDS
POSIX.1-2001.

VEDERE ANCHE
iconv(1), locale(1), localedef(1), catopen(3), gettext(3), iconv(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)

TRADUZIONE
La traduzione italiana di questa pagina di manuale è stata creata da Ottavio G. Rizzo <rizzo@pluto.linux.it>, Giulio Daprelà <giulio@pluto.it>, Elisabetta Galli <lab@kkk.it> e Marco Curreli <marcocurreli@tiscali.it>

Questa traduzione è documentazione libera; leggere la GNU General Public License Versione 3 (https://www.gnu.org/licenses/gpl-3.0.html) o successiva per le condizioni di copyright. Non ci assumiamo alcuna responsabilità.

Per segnalare errori nella traduzione di questa pagina di manuale inviare un messaggio a pluto-ildp@lists.pluto.it.