locale - Descrizione del supporto multi-lingue
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;
};
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.
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.
- /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.
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)
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 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.