6.27.2 Classe basata su API

La classe basata su API del modulo gettext vi dà maggiore flessibiltà e risulta moplto più utile dell'API di GNU gettext GNU. Questo è il modo raccomandato per la localizzazione delle vostre applicazioni e moduli Python. gettext definisce una classe ``translations'' che implementa l'analisi del formato dei file GNU .mo, e ha dei metodi per restituire sia stringhe standard a 8 bit che stringhe Unicode. Le istanze di traduzione possono anche installare se stesse nello spazio dei nomi built-in come la funzione _().

find( domain[, localedir[, languages[, all]]])
Questa funzione implementa l'algoritmo standard di ricerca dei file .mo. Prende il dominio domain identico a quello preso da textdomain(). Il valore opzionale di localedir è identico a quello della funzione bindtextdomain(). L'opzione languages è una lista di stringhe, in cui ogni stringa è un codice di linguaggio.

Se non viene passato localedir, verrà usata la directory predefinita del locale di sistema.6.3 Se non viene passato languages, verranno ricercate le seguenti variabili d'ambiente: LANGUAGE, LC_ALL, LC_MESSAGES e LANG. La prima che restituisce un valore non vuoto, viene utilizzata per la variabile languages. Le variabili d'ambiente dovrebbero contenere un elenco di linguaggi separati da due punti, che dovrebbero essere separati da quel carattere proprio per produrre la lista di stringhe del codice del linguaggio corrispondente.

Quindi find() espande e normalizza i linguaggi, e itera su di essi, cercando un file esistente costituito da questi componenti:

localedir/language/LC_MESSAGES/domain.mo

Il primo nome di file esistente viene restituito da find(). Se non viene rinvenuto alcun file, viene restituito None. Se viene passato all, viene restituito un elenco di tutti i nomi dei file, nell'ordine del quale compare la lista dei linguaggi o delle variabili d'ambiente.

translation( domain[, localedir[, languages[, class_,[fallback]]]])
Restituisce un'istanza di Translations basata su domain, localedir e languages, che vengono prima passati a find() per acquisire la lista dei percorsi dei file .mo associati. Istanze con nomi di file .mo identici vengono sovrascritte. L'attuale classe istanziata è una classe class_ se fornita, altrimenti è del tipo GNUTranslations. La classe del costruttore deve prendere un singolo file oggetto come argomento.

Se vengono rinvenuti file multipli, gli ultimi file vengono usati per restituire i primi. Per permettere l'impostazione della restituzione, viene usata copy.copy, per clonare ogni oggetto traduzione dalla cache; l'attuale istanza di dati viene ancora condivisa con la cache.

Se non viene rinvenuto alcun file .mo, questa funzione solleva un'eccezione IOError se fallback è falso (predefinito), e restituisce una istanza NullTranslations se fallback è vero.

install( domain[, localedir[, unicode]])
Installa la funzione _ nello spazio dei nomi built-in di Python, basata su domain e localedir, che sono stati passati per la funzione translation(). L'opzione unicode viene passata al risultante oggetto traduzione dal metodo install.

Come vedrete sotto, di solito vengono marcate le stringhe delle vostre applicazioni che sono candidate alla traduzione, inserendole all'interno di una chiamata alla funzione _(), come questa:

print _('Questa stringa deve essere tradotta.')

Per comodità, vorrete che la funzione _() venga installata nello spazio dei nomi built-in di Python, così da renderla più facilmente accessibile da tutti i moduli delle vostre applicazioni.



Footnotes

... sistema.6.3
Vedete le note a piè di pagina per bindtextdomain().



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