6.26 locale -- Servizi per l'internazionalizzazione

Il modulo locale accede al database delle localizzazioni POSIX, ed alle sue funzionalità. Il meccanismo della localizzazione POSIX consente ai programmatori di occuparsi solamente dei messaggi inviati da un'applicazione, senza dover conoscere le specifiche dei Paesi in cui il software verrà eseguito.

Il modulo locale viene implementato sul modulo _locale, che usa a sua volta una implementzione della localizzazione ANSI C, se disponibile.

Il modulo locale definisce le seguenti funzioni ed eccezioni:

exception Error
Eccezione sollevata quando setlocale() fallisce.

setlocale( category[, locale])
Se il parametro locale viene specificato, potrebbe essere una stringa, una tupla nella forma (language code, encoding), o None. Se è una tupla, viene convertita in una stringa usando il motore di aliasing locale. Se locale viene fornito e non è None, setlocale() modifica l'impostazione locale per la categoria category. Le categorie disponibili vengono elencate nella descrizione qui sotto. Il valore è il nome di una localizzazione. Una stringa vuota specifica le impostazioni predefinite dell'utente. Se la modifica della localizzazione fallisce, viene sollevata l'eccezione Error. Se ha successo, viene restituita l'impostazione della nuova localizzazione.

Se locale viene omesso o è None, viene restituito il valore corrente per category.

setlocale() non garantisce la sicurezza del thread sulla maggior parte dei sistemi. Le applicazioni si avviano tipicamente con una chiamata di

import locale
locale.setlocale(locale.LC_ALL, '')

Questa imposta la localizzazione per tutte le categorie dei parametri utente (solitamente specificati nella variabile d'ambiente LANG). Se da questo punto in poi la localizzazione non viene modificata, usare il multithreading non dovrebbe causare problemi.

Modificato nella versione 2.0: Aggiunto il supporto per valori tupla del parametro locale.

localeconv( )
Restituisce il database delle convenzioni locali in forma di dizionario. Questo dizionario ha le seguenti stringhe come chiavi:

Chiave  Categoria  Significato 
LC_NUMERIC 'decimal_point' Carattere del punto decimale.
  'grouping' Sequenza di numeri che specifica in quali posizioni relative il 'thousands_sep' è atteso. Se la sequenza viene terminata con CHAR_MAX, non verrà effettuato nessun altro ragguppamento. Se la sequenza termina con 0, la misura dell'ultimo gruppo viene usata ripetutamente.
  'thousands_sep' Carattere usato tra gruppi.
LC_MONETARY 'int_curr_symbol' Simbolo di valuta internazionale.
  'currency_symbol' Simbolo di valuta locale.
  'mon_decimal_point' Punto decimale usato per valori monetari.
  'mon_thousands_sep' Separatore di gruppo usato per valori monetari.
  'mon_grouping' Equivalente a 'grouping', usato per valori monetari.
  'positive_sign' Simbolo usato per annotare un valore monetario positivo.
  'negative_sign' Simbolo usato per annotare un valore monetario negativo.
  'frac_digits' Numero di cifre frazionarie usate nella formattazione locale dei valori monetari.
  'int_frac_digits' Numero di cifre frazionarie usate nella formattazione internazionale dei valori monetari.

I possibili valori per 'p_sign_posn' e 'n_sign_posn' vengono forniti qui sotto.

Valore  Spiegazione 
0 La valuta ed il valore vengono racchiusi tra parentesi.
1 Il segno dovrebbe precedere il valore ed il simbolo di valuta.
2 Il segno dovrebbe seguire il valore ed il simbolo di valuta.
3 Il segno dovrebbe precedere immediatamente il valore.
4 Il segno dovrebbe seguire immediatamente seguire il valore.
LC_MAX Non è specificato niente in questa localizzazione.

nl_langinfo( option)

Restituisce alcune informazioni sulle specifiche della localizzazione, sotto forma di stringa. Questa funzione non è disponibile in tutti i sistemi, e l'insieme delle possibili opzioni potrebbe variare attraverso le piattaforme. I possibili valori degli argomenti sono numeri, per i quali le costanti simboliche sono disponibili nel modulo locale.

getdefaultlocale( [envvars])
Tenta di determinare le impostazioni predefinite della localizzazione, e le restituisce come una tupla nella forma (language code, encoding).

In accordo con POSIX, un programma che non ha effettuato una chiamata a setlocale(LC_ALL, '') viene eseguito usando la localizzazione portabile 'C'. La chiamata a setlocale(LC_ALL, '') fa invece in modo che il programma usi la localizzazione predefinita, impostata dalla variabile LANG. Poiché non vogliamo interferire con l'impostazione della localizzazione corrente, emuliamo così il comportamento nel modo descritto sopra.

Per mantenere la compatibilità verso altre piattaforme, non viene verificata solo la variabile LANG, ma anche tutta una lista di variabili definite come parametri di ambiente. La prima trovata come definita verrà usata. I valori predefiniti di envvars vengono impostati dal percorso di ricerca usato da GNU Gettext; questo deve sempre contenere il nome della variabile "LANG". Il percorso di ricerca di GNU Gettext contiene le varibili di ambiente 'LANGUAGE', 'LC_ALL', 'LC_CTYPE' e 'LANG', in questo ordine.

Fatta eccezione per il linguaggio 'C', l'identificazione del linguaggio viene effettuata secondo il canone stabilito dalla RFC 1766. language code e encoding possono essere impostate a None se il loro valore non può essere determinato. Nuovo nella versione 2.0.

getlocale( [category])
Restituisce l'impostazione corrente per la data categoria di localizzazione, fornita come una sequenza contenente language code, encoding. category può assumere uno dei valori LC_*, con l'eccezione di LC_ALL. Il suo valore predefinito è LC_CTYPE.

Fatta eccezione per il linguaggio 'C', l'identificazione del linguaggio viene effettuata secondo il canone stabilito dalla RFC 1766. language code e encoding possono essere impostate a None se il loro valore non può essere determinato. Nuovo nella versione 2.0.

getpreferredencoding( [do_setlocale])
Restituisce la codifica utilizzata per i dati in formato testo, in accordo con le preferenze dell'utente. Le preferenze dell'utente vengono espresse differentemente su differenti sistemi operativi, e potrebbero non essere disponibili in modo programmato su alcuni sistemi, così questa funzione restituisce solo una congettura.

Su alcuni sistemi è necessaria per invocare setlocale per ottenere le preferenze dell'utente, quindi questa funzione non è thread-safe. Se l'invocazione di setlocale non è necessaria o desiderata, do_setlocale dovrebbe venire impostata a False.

Nuovo nella versione 2.3.

normalize( localename)
Restituisce un codice normalizzato e localizzato secondo il nome definibile tramite la localizzazione fornita. Il codice locale restituito viene formattato per poter essere utilizzato con setlocale(). Se la normalizzazione fallisce, viene restituito inalterato il nome originale.

Se la codifica fornita non è conosciuta, la funzione imposta il valore a quello della codifica predefinita per la localizzazione, esattamente come per setlocale(). Nuovo nella versione 2.0.

resetlocale( [category])
Imposta la localizzazione di category al valore predefinito.

L'impostazione predefinita è determinata dalla chiamata a getdefaultlocale(). Il valore predefinito per category è LC_ALL. Nuovo nella versione 2.0.

strcoll( string1, string2)
Confronta due stringhe secondo l'impostazione corrente di LC_COLLATE. Come ogni altra funzione di confronto, restituisce un valore negativo, positivo, o 0, a seconda che string1 sia collazionata prima o dopo string2, o che sia uguale ad essa.

strxfrm( string)
Trasforma una stringa in un'altra stringa che puossa veniore utilizzata dalla funzione built-in cmp(), e restituisce sempre dei risultati informativi sulla localizzazione. Questa funzione può venire usata quando la stessa stringa viene confrontata ripetutamente, ad esempio quando viene collazionata una sequenza di stringhe.

format( format, val[, grouping])
Formatta un numero val secondo l'impostazione corrente di LC_NUMERIC. Il formato segue le convenzioni dell'operatore %. Per valori in virgola mobile il punto decimale, se necessario, viene modificato. Se grouping ha valore vero, prende anche in considerazione il grouping nel risultato.

str( float)
Formatta un numero in virgola mobile usando lo stesso formato della funzione built-in str(float), ma prende in considerazione il punto decimale nel risultato.

atof( string)
Converte una stringa in un numero in virgola mobile, seguendo le impostazioni di LC_NUMERIC.

atoi( string)
Converte una stringa in un intero, seguendo le convenzioni di LC_NUMERIC.

LC_CTYPE
Categoria di localizzazione per le funzioni di tipo carattere. A seconda delle impostazioni di questa categoria, le funzioni relazionate al modulo string, cambiano il loro comportamento.

LC_COLLATE
Categoria di localizzazione utilizzata per l'ordinamento delle stringhe. Afferisce le funzioni strcoll() e strxfrm() del modulo locale.

LC_TIME
Categoria di localizzazione per la formattazione del tempo. La funzione time.strftime() segue queste convenzioni.

LC_MONETARY
Categoria di localizzazione per la formattazione dei valori monetari. Le opzioni vengono rese disponibili dalla funzione localeconv().

LC_MESSAGES
Categoria di localizzazione per la visualizzazione dei messaggi. Python attualmente non supporta messaggi specifici sulle informazioni di localizzazione. I messaggi mostrati dal sistema operativo, come quelli restituiti da os.strerror() possono venire influenzati da questa categoria.

LC_NUMERIC
Categoria di localizzazione per la formattazione dei numeri. Le funzioni format(), atoi(), atof() e str() del modulo locale possono venire influenzate da questa categoria. Tutte le altre operazioni di formattazione numeriche non ne sono interessate.

LC_ALL
Combinazione di tutte le impostazioni di localizzazione. Se questa opzione viene usata quando la localizzazione viene modificata, viene tentata la modifica della localizzazione per tutte le categorie. Se ciò fallisce per ogni categoria, allora non ne viene modificata nessuna. Quando la localizzazione viene richiamata usando questa opzione, viene restituita una stringa indicante le impostazioni di tutte le categorie. Questa stringa può venire usata successivamente per ripristinare le impostazioni.

CHAR_MAX
Questa è una costante simbolica usata per differenti valori restituiti da localeconv().

La funzione nl_langinfo accetta una delle seguenti chiavi. Molte di queste descrizioni sono tratte dalle corrispondenti descrizioni della libreria GNU C.

CODESET
Restituisce una stringa con il nome del carattere codificato nella localizzazione selezionata.

D_T_FMT
Restituisce una stringa che può venire usata come stringa di formattazione per strftime(3), per rappresentare l'ora e la data nel modo indicato dalla specifica localizzazione.

D_FMT
Restituisce una stringa che può venire usata come stringa di formattazione per strftime(3), per rappresentare la data nel modo indicato dalla specifica localizzazione.

T_FMT
Restituisce una stringa che può venire usata come stringa di formattazione per strftime(3), per rappresentare l'ora nel modo indicato dalla specifica localizzazione.

T_FMT_AMPM
Il valore restituito può venire usato come stringa di formattazione per `strftime', per rappresentare l'ora nel formato am/pm.

DAY_1 ... DAY_7
Restituisce il nome del giorno n-esimo della settimana. Questo segue la convenzione americana di DAY_1 che inizia con la Domenica, non la convenzione internazionale (ISO 8601) in cui il primo giorno della settimana è il Lunedì.

ABDAY_1 ... ABDAY_7
Restituisce il nome abbreviato del giorno n-esimo della settimana.

MON_1 ... MON_12
Restituisce il nome del mese n-esimo.

ABMON_1 ... ABMON_12
Restituisce il nome abbreviato del mese n-esimo.

RADIXCHAR
Restituisce un carattere radice (punto decimale, virgola decimale, ecc).

THOUSEP
Restituisce il crattere separatore per le migliaia (gruppi di tre cifre).

YESEXPR
Restituisce una espressione regolare che può venire usata con la funzione regex per individuare un responso positivo ad una domanda di tipo sì/no. L'espressione è nella sintassi adatta alla funzione regex() della libreria C, che può differire dalla sintassi usata in re.

NOEXPR
Restituisce una espressione regolare che può venire usata con la funzione regex(3) per individuare un responso negativo ad una domanda di tipo sì/no.

CRNCYSTR
Restituisce il simbolo di valuta corrente, prceduto da "-" se il simbolo dovrebbe apparire prima del valore, "+" se il simbolo dovrebbe apparire dopo il valore, o "." se il simbolo dovrebbe sostituire il carattere radice.

ERA
Il valore restituito rappresenta l'era usata nella localizzazione corrente.

Molte localizzazioni non definiscono questo valore. Un esempio di localizzazione che definisce questo valore è la Giapponese. In Giappone, la rappresentazione tradizionale delle date include il nome dell'era corrispondente al regno di un determinato imperatore.

Normalmente non dovrebbe essere necessario usare direttamente questo valore. Specificando il modificatore E nelle stringhe di formattazione, la funzione strftime userà questa informazione. Il formato della stringa restituita non viene specificato, e quindi non dovreste darne per scontata la conoscenza su sistemi differenti.

ERA_YEAR
Il valore restituisce l'anno nell'era corrente della localizzazione.

ERA_D_T_FMT
Restituisce un valore che può venire usato come stringa di formattazione per la funzione strftime, per rappresentare nella localizzazione indicata, la data ed il tempo nel modo basato sull'era.

ERA_D_FMT
Questo restituisce un valore che può venire usato come stringa di formattazione per la funzione strftime, per rappresentare nella localizzazione indicata, il tempo nel basato sull'era.

ALT_DIGITS
Il valore restituito è una rappresentazione dei numeri fino a 100, usati per rappresentare i valori da 0 a 99.

Esempio:

>>> import locale
>>> loc = locale.setlocale(locale.LC_ALL)    #  prende la localizzazione corrente
>>> locale.setlocale(locale.LC_ALL, 'de_DE') #+ usa la localizzazione tedesca; 
                                             #+ il nome potrebbe
                                             #+ variare con la piattaforma
>>> locale.strcoll('f\xe4n', 'foo')          #  confronta una stringa 
                                             #+ contenente una umlaut 
>>> locale.setlocale(locale.LC_ALL, '')      #  usa il localizzazione
                                             #+ definita dall'utente
>>> locale.setlocale(locale.LC_ALL, 'C')     #  usa la localizzazione predefinita (C)
>>> locale.setlocale(locale.LC_ALL, loc)     # ripristina la localizzazione memorizzata



Subsections
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.