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:
category[, locale]) |
(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.
) |
Chiave | Categoria | Significato |
---|---|---|
'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. | |
'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 |
---|---|
La valuta ed il valore vengono racchiusi tra parentesi. | |
Il segno dovrebbe precedere il valore ed il simbolo di valuta. | |
Il segno dovrebbe seguire il valore ed il simbolo di valuta. | |
Il segno dovrebbe precedere immediatamente il valore. | |
Il segno dovrebbe seguire immediatamente seguire il valore. | |
Non è specificato niente in questa localizzazione. |
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.
[envvars]) |
(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.
[category]) |
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.
[do_setlocale]) |
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.
localename) |
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.
[category]) |
L'impostazione predefinita è determinata dalla chiamata a getdefaultlocale(). Il valore predefinito per category è LC_ALL. Nuovo nella versione 2.0.
string1, string2) |
0
, a seconda che
string1 sia collazionata prima o dopo string2, o che sia
uguale ad essa.
string) |
format, val[, grouping]) |
%
. 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.
float) |
str(float)
, ma prende in considerazione
il punto decimale nel risultato.
string) |
string) |
La funzione nl_langinfo accetta una delle seguenti chiavi. Molte di queste descrizioni sono tratte dalle corrispondenti descrizioni della libreria GNU C.
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.
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