Per preparare il vostro codice per I18N, avete bisogno di cercare tutte
le stringhe nei vostri files. Ogni stringa che necessita di essere
tradotta dovrebbe essere contrassegnata in una cornice
_('...')
-- cioè una chiamata alla funzione _().
Per esempio:
filename = 'mylog.txt' message = _('writing a log message') fp = open(filename, 'w') fp.write(message) fp.close()
In questo esempio, la stringa 'writing a log message'
viene
marcata come candidata alla traduzione, mentre le stringhe
'mylog.txt'
e 'w'
non lo sono.
La distribuzione Python viene fornita di due strumenti che vi aiutano a generare i cataloghi dei messaggi una volta che avrete preparato il vostro codice sorgente. Queste potrebbero essere disponibili o meno in una distribuzione binaria, ma possono essere trovate nella distribuzione sorgente, nella directory Tools/i18n.
Il programma pygettext6.4scansiona tutto il vostro codice sorgente Python, cercando le stringhe che voi avrete precedentemente contrassegnato come traducibili. È simile al programma GNU gettext tranne per il fatto che comprende tutte le complessità del codice sorgente Python, ma non sa niente del codice sorgente C o C++. Non avrete bisogno di GNU gettext finché non vi troverete a dover tradurre codice C (come i moduli estensione in C).
pygettext genera file testuali di catalogo dei messaggi .pot in stile Uniforum, essenzialmente file umanamente comprensibili, che contengono ogni stringa contrassegnata nel codice sorgente, con un marcatore per le stringhe di traduzione. pygettext è uno script a riga di comando che supporta un'interfaccia a riga di comando simile a xgettext; per i dettagli sul suo uso, eseguite:
pygettext.py --help
Copie di questi files .pot vengono gestite dai diversi traduttori, che scrivono versioni specifiche per la loro lingua. Loro rimandano indietro la versione specifica come un file .po. Usando il programma msgfmt.py6.5 (nella directory Tools/i18n), prendete i file .po dal vostro traduttore e generate dei file di catalogo binari in formato .mo, leggibili dalla macchina. I file .mo sono quelli che il modulo gettext usa attualmente per il processo di traduzione in run-time.
A seconda se state internazionalizzando una vostra intera applicazione o un singolo modulo, potete usare il modulo gettext nel vostro codice.