i18n

Sagteware kiekie:
i18n
Sagteware besonderhede:
Weergawe: 0.1
Upload datum: 14 Apr 15
Ontwikkelaar: Antonio Cuni
Lisensie: Gratis
Populariteit: 17

Rating: 3.0/5 (Total Votes: 1)

i18n is 'n pakket wat probeer om die workflow en ontwikkeling van die internasionale gemeenskap aansoeke & nbsp te vereenvoudig;. Dit is 'n dun wrapper rondom bestaande gereedskap, in die besonder gettext en babel.
Basiese gebruik
# Demo.py
#
van i18n.translator invoer Translator
supported_languages ​​= ['it_IT', 'fr_FR', 'de_DE']
# Aktiveer italian vertalings
tr = Translator ('/ pad / na / root', supported_languages, 'it_IT')
Druk tr ._ ('Hello world! ")
waar / pad / na / root / is die hoofdmap van jou projek. Wanneer aangehaal, die Translator klas skep outomaties 'n gids genaamd / pad / na / root / tale waar die vertalings gestoor word.
Uittreksels boodskappe
Voordat die werklike vertaling, wat jy nodig het om die boodskappe te onttrek uit jou bron lêers, deur die oproep van die uittreksel opdrag op die i18n module, wat 'n wrapper rondom pybabel uittreksel en pybabel update:
& Nbsp; luislang -M i18n --root = / pad / na / wortel --languages ​​= it_IT, fr_FR, de_DE uittreksel
uittreksel lyk vir al die boodskappe toegedraai in oproepe na _ (), gettext () of ngettext () en produseer 'n lêer genaamd tale / template.pot. Dit is 'n standaard gettext po file` wat al die boodskappe wat in die aansoek bevat.
Verder, onttrek () skep ook 'n boodskap katalogus lêer vir elk van die ondersteunde tale as tale / $ KODE / LC_MESSAGES / messages.po, waar $ kode is een van die tale wat in supported_languages ​​(it_IT, fr_FR en de_DE in die voorbeeld hierbo ).
Die katalogus lêers is nou gereed om te vertaal met behulp van een van die talle bestaande gereedskap, byvoorbeeld QT Linguist of Poedit. Vir die korrekte werking van die aansoek, die hele tale / hiërargie moet bewaar word. Ons stel voor dat die verskillende messages.po lêers in Weergawe Control System saam spoor met die ander lêers wat aan die aansoek.
Opdatering boodskappe
Tydens die ontwikkeling van die aansoek, sal jy sekerlik nuwe boodskappe voeg vertaal word. Die uittreksel opdrag outomaties hanteer hierdie geval: as dit bevind bestaande katalogus lêers, hul inhoud (insluitend die bestaande vertalings) is saamgesmelt met die nuut onttrek boodskappe.
Die opstel van katalogusse
Dit is nodig om die katalogus lêers op te stel voor die gebruik van hulle met gettext. By verstek, ons Translator voorwerp stel outomaties al die katalogusse gevind in tale /, die vervaardiging van die ooreenstemmende Mo lêers. Die samestelling is gedoen net vir die katalogus lêer verander is. Dit beteken dat jy in die meeste gevalle nie hoef te bekommer oor die samestelling van die katalogusse.
Indien u verkies om meer beheer oor hierdie stap te hê, kan jy beweeg autocompile = False die konstruktor van Translator en stel hulle met die hand uit die opdrag lyn:
& Nbsp; luislang -M i18n --root = / pad / na / wortel --languages ​​= it_IT, fr_FR, de_DE stel
Stoor vertalings in 'n databasis
Vir sommige aanwendings is dit nuttig om die gebruiker nuwe vertalings te definieer en / of ignoreer die verstek kinders te laat. i18n ondersteun hierdie gebruik geval met die DBTranslator klas, wat is 'n subklas van Translator. Wanneer die vertaling, DBTranslator eerste lyk in die databasis: as die boodskap is nie gevind nie, delegeer aan die standaard gettext gedrag.
DBTranslator is gebaseer op sqlalchemy. Sy constructor neem 'n bykomende enjin parameter:
van i18n.dbtranslator invoer DBTranslator
van sqlalchemy invoer create_engine
enjin = create_engine ('sqlite: ///db.sqlite')
ROOT = '/ pad / na / root'
TALE = ['it_IT', 'fr_FR']
DEST_LANGUAGE = 'it_IT'
tr = DBTranslator (ROOT, tale, DEST_LANGUAGE, enjin = enjin)
Druk tr ._ ("hello world")
DBTranslator skep outomaties die tafel translation_entries in die DB. Dan is dit tot die aansoek om 'n gebruikerskoppelvlak om die tafel te manipuleer te voorsien. Vir die toets, kan jy die add_translation () metode gebruik om 'n nuwe vertaling in die DB te voeg:
tr.add_translation ("it_IT", "hello world", "ciao mondo")
Druk tr ._ ("hello world") # afdrukke "ciao mondo"
Hoe om 'n globale Translator te gebruik
Deur ontwerp, i18n probeer heeltemal te vermy enige globale toestand. Dit beteken dat jy kan soveel Translator en DBTranslator as jy wil, elkeen verwys na 'n ander gids en / of databasis instansieer. Dit is veral nuttig vir die toets.
Maar in die praktyk die meeste projekte wil 'n globale vertaler wat weet van die boodskappe van al die komponente in die projek te gebruik. Die demo aansoek toon 'n manier om dit te doen in die translate.py module:
invoer py
van i18n.translator invoer Translator
# Stel die wortel van die projek na die gids wat hierdie lêer
ROOT = py.path.local (__ __ lêer). Dirpath ()
TALE = ['it_IT', 'fr_FR', 'de_DE']
tr = Translator (ROOT, tale, 'it_IT')
_ = Tr._
ngettext = tr.ngettext
As __name__ == '__main__':
& Nbsp; tr.cmdline (sys.argv)
Hierdie manier, die res van die aansoek kan eenvoudig invoer en gebruik _ () en ngettext () uit translate.py. Of, na jou voorkeur, invoer direk die tr voorwerp en gebruik tr ._ () en tr.ngettext () te boodskappe vertaal.
Die laaste twee reëls van die kode kan 'n maklike manier uittreksel te bel en stel uit die opdrag lyn sonder om hand te spesifiseer die wortel rig en die ondersteunde tale. Net hardloop:
& Nbsp; luislang translate.py uittreksel # ... of stel

Vereistes :

  • Python

Soortgelyke sagteware

python-gettext
python-gettext

14 Apr 15

Intlize
Intlize

14 Apr 15

Transolution
Transolution

3 Jun 15

Translate Toolkit
Translate Toolkit

17 Feb 15

Ander sagteware ontwikkelaar Antonio Cuni

pdbpp
pdbpp

11 May 15

Kommentaar te i18n

Kommentaar nie gevind
Kommentaar te lewer
Draai op die foto!