locale - Descrizione del supporto multi-lingue
#include <locale.h>
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.
POSIX.1-2001.
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 <
[email protected]>, Giulio Daprelà
<
[email protected]>, Elisabetta Galli <
[email protected]> e Marco Curreli
<
[email protected]>
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
[email protected]