i18n

Software screenshot:
i18n
Dettagli del software:
Versione: 0.1
Data di caricamento: 14 Apr 15
Sviluppatore: Antonio Cuni
Licenza: Libero
Popolarità: 17

Rating: 3.0/5 (Total Votes: 1)

i18n è un pacchetto che cerca di semplificare il flusso di lavoro e lo sviluppo di applicazioni internazionalizzate. & Nbsp; è un wrapper sottile intorno strumenti esistenti, in particolare gettext e Babel.
Utilizzo base
# Demo.py
#
da i18n.translator import Translator
supported_languages ​​= ['it_IT', 'fr_FR', 'de_DE']
# Attivano traduzioni italiane
tr = Translator ('/ path / to / root', supported_languages, 'it_IT')
tr stampa ._ ('Ciao mondo!')
dove / path / to / root / è la directory radice del vostro progetto. Quando istanziato, la classe Translator crea automaticamente una directory chiamata / path / to / root / lingue in cui sono memorizzati i traduzioni.
Messaggi Estrazione
Prima di fare la traduzione reale, è necessario estrarre i messaggi dai file sorgente, richiamando il comando di estrazione del modulo i18n, che è un wrapper estratto pybabel e aggiornamento pybabel:
& Nbsp; python -m i18n --root = / path / to / root --languages ​​= it_IT, fr_FR, de_DE estratto
estratto cerca tutti i messaggi avvolto all'interno chiamate a _ (), gettext () o ngettext () e produce un file chiamato lingue / template.pot. Questo è un po file` gettext standard, che contiene tutti i messaggi presenti nella domanda.
Inoltre, estrarre () crea anche un file di catalogo di messaggi per ciascuna delle lingue supportate come lingue / $ CODE / LC_MESSAGES / messages.po, dove $ CODE è una delle lingue elencate in supported_languages ​​(it_IT, fr_FR de_DE e nell'esempio precedente ).
I file di catalogo sono ora pronti per essere tradotti utilizzando uno dei molti strumenti esistenti, per esempio QT linguista o Poedit. Per il corretto funzionamento dell'applicazione, l'intero lingue / gerarchia deve essere conservato. Si consiglia di seguire i vari file messages.po in versione sistema di controllo insieme agli altri file che appartengono all'applicazione.
messaggi Aggiornamento
Durante lo sviluppo dell'applicazione, sarà sicuramente aggiungere nuovi messaggi da tradurre. Il comando estratto gestire automaticamente questo caso: se trova file di catalogo esistenti, il loro contenuto (comprese le traduzioni esistenti) si fonde con i messaggi appena estratti.
cataloghi Compilazione
E 'necessario compilare i file di catalogo prima di utilizzarli con gettext. Per impostazione predefinita, il nostro oggetto Translator compila automaticamente tutti i cataloghi presenti in lingue /, producendo i relativi .mo file. La compilazione avviene solo quando il file catalogo è stato modificato. Ciò significa che, nella maggior parte dei casi non si deve preoccupare la compilazione dei cataloghi.
Se si preferisce avere più controllo su questo punto, è possibile passare autocompilazione = False al costruttore di traduttore e compilare manualmente dalla riga di comando:
& Nbsp; python -m i18n --root = / path / to / root --languages ​​= it_IT, fr_FR, de_DE compilazione
Memorizzazione di traduzioni in un database
Per alcune applicazioni è utile per permettere all'utente di definire nuove traduzioni e / o cambiare i valori di default. i18n supporta questo caso d'uso con la classe DBTranslator, che è una sottoclasse di traduttore. Quando si traduce, DBTranslator prima cerca nel database: se il messaggio non viene trovato, delega al comportamento gettext standard.
DBTranslator si basa su sqlalchemy. Il costruttore accetta un parametro aggiuntivo motore:
da i18n.dbtranslator import DBTranslator
da SQLAlchemy create_engine import
motore = create_engine ('sqlite: ///db.sqlite')
ROOT = '/ path / to / root'
LINGUE = ['it_IT', 'fr_FR']
DEST_LANGUAGE = 'it_IT'
tr = DBTranslator (ROOT, LINGUE, DEST_LANGUAGE, motore = motore)
stampa tr ._ ("ciao mondo")
DBTranslator crea automaticamente le translation_entries tabella nel DB. Poi, è fino all'applicazione per fornire un'interfaccia utente per manipolare la tabella. Per il test, è possibile utilizzare il metodo add_translation () per inserire una nuova traduzione del DB:
tr.add_translation ("it_IT", "ciao mondo", "Ciao mondo")
tr stampa ._ ("Hello World") # stampa "Ciao mondo"
Come utilizzare un traduttore globale
In base alla progettazione, i18n cerca di evitare completamente qualsiasi stato globale. Ciò significa che è possibile creare un'istanza come molti Traduttore e DBTranslator come volete, ognuno riferito a una directory e / o database diverso. Questo è particolarmente utile per i test.
Tuttavia, in pratica la maggior parte dei progetti desiderano utilizzare un traduttore globale che conosce i messaggi di tutti i componenti del progetto. L'applicazione demo mostra un modo per farlo nel modulo translate.py:
import py
da i18n.translator import Translator
# Impostare la radice del progetto nella directory che contiene il file
ROOT = py.path.local (__ __ di file). Dirpath ()
LINGUE = ['it_IT', 'fr_FR', 'de_DE']
tr = Translator (ROOT, LINGUE, 'it_IT')
_ = Tr._
ngettext = tr.ngettext
if __name__ == '__main__':
& Nbsp; tr.cmdline (sys.argv)
In questo modo, il resto dell'applicazione può semplicemente importare e utilizzare _ () e ngettext () da translate.py. O, a vostra preferenza, importazione direttamente l'oggetto ma e uso tr ._ () e tr.ngettext () per tradurre i messaggi.
Le ultime due righe del codice permette un modo conveniente per chiamare estrarre e compilare dalla riga di comando, senza dover specificare manualmente la directory radice e le lingue supportate. Basta eseguire:
& Nbsp; estratto python translate.py # ... o compilare

Requisiti :

  • Python

Programmi simili

PHP-GTK
PHP-GTK

2 Jun 15

setup-gettext
setup-gettext

3 Jun 15

locales-test
locales-test

14 Apr 15

zope.app.locales
zope.app.locales

14 Apr 15

Altri software di sviluppo Antonio Cuni

pdbpp
pdbpp

11 May 15

Commenti a i18n

I commenti non trovato
Aggiungi commento
Accendere le immagini!