i18n

Screenshot Software:
i18n
Detalii soft:
Versiune: 0.1
Incarca data: 14 Apr 15
Producător: Antonio Cuni
Licenţă: Gratuit
Popularitate: 17

Rating: 3.0/5 (Total Votes: 1)

i18n este un pachet care încearcă să simplifice fluxul de lucru și dezvoltarea de aplicații internaționalizate. & Nbsp; este un înveliș subțire în jurul instrumentelor existente, în special gettext și Babel.
Utilizarea Basic
# Demo.py
#
de la i18n.translator import Translator
supported_languages ​​= ['it_IT', 'fr_FR', 'de_DE']
# Activa traduceri italiană
tr = Traducator ('/ calea / spre / rădăcină ", supported_languages," it_IT ")
imprimare tr ._ ("Salut lume!")
în cazul în care / calea / catre / rădăcină / este directorul rădăcină al proiectului. Când instanțiat, clasa Traducator creează automat un director numit / calea / catre / rădăcină / Limbi unde sunt depozitate traduceri.
Mesajele Extragerea
Înainte de a face traducerea real, aveți nevoie pentru a extrage mesajele de la fișierele sursă, invocând comanda extras de pe modulul i18n, care este un înveliș în jurul valorii de extract pybabel și actualizare pybabel:
& Nbsp; piton -m i18n --root = / calea / catre / rădăcină --languages ​​= it_IT, fr_FR, de_DE extract
extract caută toate mesajele împachetate în interiorul cheamă la _ (), gettext () sau ngettext () și produce un fișier numit limbi / template.pot. Aceasta este o file` standard de po gettext care contine toate mesajele găsite în cerere.
Mai mult decât atât, extract (), de asemenea, creează un fișier catalog mesaj pentru fiecare dintre limbile acceptate ca limbi / $ CODUL / LC_MESSAGES / messages.po, unde $ COD este una din limbile enumerate în supported_languages ​​(it_IT, fr_FR și de_DE în exemplul de mai sus ).
Fișierele catalog sunt acum gata pentru a fi convertite utilizând una dintre numeroasele instrumente existente, de exemplu QT lingvist sau poedit. Pentru funcționarea corectă a cererii, limbile întregi / ierarhia trebuie să fie conservate. Vă sugerăm să urmărească diverse fișiere messages.po în sistemul de control Versiunea împreună cu alte fișiere care aparțin aplicației.
Mesajele Actualizarea
Pe parcursul dezvoltării aplicației, veți adăuga cu siguranță noi mesaje de tradus. Comanda extract ocupe în mod automat acest caz: în cazul în care constată fișiere catalog existente, conținutul acestora (inclusiv traducerile existente) se fuzionat cu mesajele nou extrase.
Cataloage Compilarea
Este necesar pentru a compila fișierele catalog înainte de a le utiliza cu gettext. În mod implicit, obiectul nostru Traducator compilează în mod automat toate cataloagele gasite in limbi /, care produc fișierele corespunzătoare .mo. Compilatia se face numai atunci când fișierul catalog a fost modificat. Acest lucru înseamnă că, în cele mai multe cazuri nu trebuie să vă faceți griji cu privire la elaborarea cataloagelor.
Dacă preferați să aveți mai mult control asupra acest pas, puteți trece autocompile = false pentru constructorul de Traducator si le compila manual din linia de comandă:
& Nbsp; piton -m i18n --root = / calea / catre / rădăcină --languages ​​= it_IT, fr_FR, de_DE compila
Salvarea traduceri într-o bază de date
Pentru unele aplicații, este util pentru a permite utilizatorului să definească noi traduceri și / sau suprascrie pe cele implicite. i18n susține acest caz de utilizare cu clasa DBTranslator, care este o subclasă de Traducator. Când traducere, DBTranslator întâi arată în baza de date: dacă mesajul nu este găsit, delegați la comportamentul standard de gettext.
DBTranslator se bazează pe SQLAlchemy. Constructor sa ia un parametru adițional motor:
de la i18n.dbtranslator DBTranslator import
de la create_engine import SQLAlchemy
motor = create_engine ('sqlite: ///db.sqlite ")
ROOT = '/ calea / spre / rădăcină "
LIMBI = ['it_IT "," fr_FR "]
DEST_LANGUAGE = 'it_IT'
tr = DBTranslator (ROOT, LIMBI STRĂINE, DEST_LANGUAGE, motor = motor)
tr imprimare ._ ("hello world")
DBTranslator creează automat translation_entries de masă în PB. Apoi, este de până la cererea de a oferi o interfață de utilizator pentru a manipula masa. Pentru testarea, puteți utiliza metoda add_translation () pentru a introduce o nouă traducere în PB:
tr.add_translation ("it_IT", "Hello World", "Ciao mondo")
imprimare tr ._ ("Hello World") # printuri "ciao Mondo"
Cum să utilizați Translator global
Prin design, i18n încearcă să evite complet orice stat global. Acest lucru înseamnă că puteți instantiate cât mai multe Translator și DBTranslator, după cum doriți, fiecare referindu-se la un director și / sau baze de date diferite. Acest lucru este util mai ales pentru testare.
Cu toate acestea, în practică, majoritatea proiectelor doriți să utilizați un translator global care știe despre mesajele tuturor componentelor din cadrul proiectului. Aplicația demo arată o modalitate de a face acest lucru în modulul translate.py:
py import
de la i18n.translator import Translator
# Stabilit rădăcina proiectului in directorul ce conține acest fișier
ROOT = py.path.local (__ __ fișier). Dirpath ()
LIMBI = ['it_IT "," fr_FR "," de_DE "]
tr = Traducator (ROOT, LIMBI STRĂINE, "it_IT")
_ = Tr._
ngettext = tr.ngettext
dacă __name__ == '__main__ ":
& Nbsp; tr.cmdline (sys.argv)
Astfel, restul aplicatiei poate importa simplu și utilizați _ () și ngettext () din translate.py. Sau, la preferințe, import direct de obiect tr și utilizare tr ._ () și tr.ngettext () pentru a traduce mesaje.
Ultimele două linii ale codului permite un mod convenabil de a apela extras și compila din linia de comandă, fără a specifica manual dir rădăcină și limbile acceptate. Doar rulați:
& Nbsp; extract piton translate.py # ... sau compila

Cerințe :

  • Python

Software similare

pylint-i18n
pylint-i18n

12 May 15

rbtranslations
rbtranslations

14 Apr 15

Pytho
Pytho

3 Jun 15

GOB
GOB

17 Feb 15

Alte software-uri de dezvoltator Antonio Cuni

pdbpp
pdbpp

11 May 15

Comentarii la i18n

Comentariile nu a fost găsit
Adauga comentarii
Porniţi pe imagini!