I18n yra paketas, kuris bando supaprastinti darbo eigą ir plėtros internacionalizacijos programų. & Nbsp; Tai plonas įvynioti aplink esamas priemones, ypač gettext ir Babelio.
Pagrindinės naudojimas
# Demo.py
#
nuo i18n.translator importo Vertėjas
supported_languages = ['it_IT "," fr_FR "," de_DE']
# Aktyvuoti italų
TR = Vertėjas ("/ kelias / iki / root", supported_languages "it_IT)
Spausdinti tr ._ ("Hello world!")
kur / kelias / iki / root / yra šakninis katalogas jūsų projekto. Kai instantiated, Vertėjas klasės automatiškai sukuria katalogas vadinama / kelias / iki / root / kalbos kur vertimai yra saugomi.
ištraukimo pranešimai
Prieš tai faktinė vertimą, jums reikia išgauti laiškus iš jūsų šaltinio failus, remdamasis ekstraktas komandą i18n modulis, kuris yra aplink pybabel ekstrakto ir pybabel atnaujinimo įvynioti:
& Nbsp; python -m I18n --root = / kelias / iki / root --languages = it_IT, fr_FR, de_DE ekstraktas
ekstraktas atrodo, kad visi pranešimai suvynioti viduje skambučius _ (), gettext () arba ngettext () ir gamina failo vadinamas kalbos / template.pot. Tai standartinė gettext po file` kuriame visus pranešimus nerasta paraiškoje.
Be to, ekstraktas () taip pat sukuria pranešimą kataloge failą kiekvienam iš palaikomų kalbų, kaip kalbos / $ KODAS / LC_MESSAGES / messages.po, kur $ kodeksas yra vienas išvardytų supported_languages (it_IT, fr_FR ir de_DE pirmiau pateiktame pavyzdyje kalbų ).
Katalogas failai dabar yra pasirengę būti perskaičiuojami naudojant vieną iš daugelio esamų priemonių, pavyzdžiui, QT Lingvistas ar Generator. Už teisingą veikimą taikymo, visa kalbos / hierarchija turi būti išsaugotas. Siūlome sekti įvairius messages.po failus versijų kontrolės sistema kartu su kitais failais priklausančių taikymo.
atnaujinimas pranešimai
Per taikymo plėtrą, tai tikrai pridėti naujus pranešimus būti išversti. Ekstraktas komanda automatiškai tvarkyti šią bylą: jei ji nustato esamus katalogas failus, jų turinį (įskaitant esamų vertimų) yra sujungta su naujai išgautas pranešimams.
Compiling katalogai
Būtina sudaryti katalogas failus prieš juos naudojant su gettext. Pagal nutylėjimą, mūsų Vertėjas objektas automatiškai kaupia visus katalogus nerasta kalbomis /, gaminant atitinkamus Mo failus. Kompiliacija daroma tik tada, kai katalogas failas buvo pakeistas. Tai reiškia, kad daugeliu atvejų jūs neturite jaudintis dėl iš katalogų sudarymui.
Jei norite turėti daugiau kontroliuoti šį žingsnį, galite pereiti autocompile = false prie Vertėjas konstruktorius ir kaupia juos rankiniu būdu iš komandinės eilutės:
& Nbsp; python -m I18n --root = / kelias / iki / root --languages = it_IT, fr_FR, de_DE kaupia
Saugojimas vertimus į duomenų bazę "
Dėl kai kurių programų ji yra naudinga leisti vartotojui nustatyti naujų vertimų ir / arba nepaisyti nesami. I18n palaiko šią naudojimo atveju su DBTranslator klasės, kuri yra iš Vertėjas poklasis. Verčiant, DBTranslator pirmoji atrodo bazėje: jei pranešimas nerastas, jis deleguoja į standartinį Gettext elgesį.
DBTranslator remiasi sqlalchemy. Jo konstruktorius užima papildomą variklio parametrą:
nuo i18n.dbtranslator importo DBTranslator
nuo sqlalchemy importo create_engine
Variklio = create_engine ("SQLite: ///db.sqlite)
Root = "/ kelias / iki / root"
KALBOS = ['it_IT "," fr_FR']
DEST_LANGUAGE = 'it_IT "
TR = DBTranslator (šaknis, KALBOS, DEST_LANGUAGE, variklio = variklio)
Spausdinti tr ._ ("hello world")
DBTranslator automatiškai sukuria stalo translation_entries DB. Tada jis yra iki paraiškos teikti žinutę vartotojo sąsają manipuliuoti stalą. Dėl bandymų, galite naudoti add_translation () metodą įterpti naują vertimą į DB:
tr.add_translation ("it_IT", "hello world", "ciao mondo")
Spausdinti tr ._ ("Hello World") # spausdins "ciao Mondo"
Kaip naudoti pasaulinę Vertėjas
Pagal projektą, I18n bando visiškai išvengti bet kokio pasaulinę valstybę. Tai reiškia, kad jūs galite instancija, nes daugelis vertėjas ir DBTranslator, kaip jūs norite, kiekvienas iš jų su nuoroda į kitą katalogą ir / arba duomenų bazėje. Tai ypač naudinga, testuoti.
Tačiau praktiškai dauguma projektų norite naudoti pasaulinę vertėjas, kuris žino apie pranešimų visus projekto komponentų. Demo taikymas rodo, kaip tai padaryti iš translate.py modulis:
importo py
nuo i18n.translator importo Vertėjas
# Nustatyti projekto šaknis į katalogą, kuriame yra šį failą
Root = py.path.local (__ __ failą). Dirpath ()
KALBOS = ['it_IT "," fr_FR "," de_DE']
TR = Vertėjas (šaknis, KALBOS "it_IT)
_ = Tr._
ngettext = tr.ngettext
jei __name__ == '__main__ ":
& Nbsp; tr.cmdline (sys.argv)
Tokiu būdu, paraiškos poilsio gali tiesiog importuoti ir naudoti _ () ir ngettext () iš translate.py. Arba jūsų pageidavimus, importas tiesiogiai tr objektas ir naudoti tr ._ () ir tr.ngettext () išversti pranešimus.
Dvi paskutinės eilutės kodas leidžia patogus būdas skambinti ekstraktas ir kaupia iš komandinės eilutės be būtinybės rankiniu būdu nurodyti root dir ir palaikomų kalbų. Tiesiog paleiskite:
& Nbsp; python translate.py ekstraktas # ... arba kaupia
Reikalavimai :
- Python
Komentarai nerastas