i18n

Software skärmdump:
i18n
Mjukvaruinformation:
Version: 0.1
Ladda upp dagen: 14 Apr 15
Utvecklare: Antonio Cuni
Licens: Gratis
Popularitet: 17

Rating: 3.0/5 (Total Votes: 1)

i18n är ett paket som försöker förenkla arbetsflödet och utveckling av internationalise tillämpningar. & Nbsp; Det är en tunn wrapper runt befintliga verktyg, särskilt gettext och babel.
Grundläggande användning
# Demo.py
#
från i18n.translator import Translator
supported_languages ​​= ['it_IT', 'fr_FR', 'de_DE']
# Aktiverar italienska översättningar
tr = Översättare ('/ sökväg / till / root ", supported_languages," it_IT')
print tr ._ ('Hej världen! ")
där / sökväg / till / root / är rotkatalogen ditt projekt. När instansieras skapar Översättare klassen automatiskt en katalog som heter / sökväg / till / root / språk där översättningarna lagras.
Extrahera meddelanden
Innan du gör själva översättningen, måste du extrahera meddelanden från källfilerna, genom att anropa kommandot extraktet på i18n modulen, som är en wrapper runt pybabel extrakt och pybabel uppdatering:
& Nbsp; python -m i18n --root = / sökväg / till / root --languages ​​= it_IT, fr_FR, de_DE extrakt
extrakt ser för alla meddelanden inslagna insidan samtal till _ (), gettext () eller ngettext () och producerar en fil som heter språk / template.pot. Detta är en standard gettext po file` som innehåller alla meddelanden som finns i ansökan.
Dessutom extrahera () skapar också ett meddelandekatalog fil för varje språk som stöds som språk / $ CODE / LC_MESSAGES / messages.po, där $ CODE är ett av de språk som anges i supported_languages ​​(it_IT, fr_FR och de_DE i exemplet ovan ).
De katalogfiler är nu redo att översättas med hjälp av någon av de många befintliga verktyg, t.ex. QT Linguist eller poedit. För korrekt funktion av ansökan, måste hela språk / hierarki som ska bevaras. Vi föreslår att spåra de olika messages.po filer i Version Control System tillsammans med de andra filerna som hör till programmet.
Uppdatera meddelanden
Under utvecklingen av programmet, kommer du säkert lägga till nya meddelanden som ska översättas. Extraktet Kommandot hanterar automatiskt här fallet: om den finner existerande katalogfiler, deras innehåll (inklusive de befintliga översättningarna) slås samman med de nyligen extraherade meddelanden.
Kompilera kataloger
Det är nödvändigt att sammanställa katalogfiler innan du använder dem med gettext. Som standard samman vår Översättare objekt automatiskt alla katalogerna som finns i språk /, producerar motsvarande .mo filerna. Sammanställningen görs endast när katalogen filen har ändrats. Detta innebär att i de flesta fall behöver du inte oroa dig för sammanställningen av katalogerna.
Om du föredrar att ha mer kontroll på det här steget kan du skicka autocompile = False till konstruktören av Översättare och sammanställa dem manuellt från kommandoraden:
& Nbsp; python -m i18n --root = / sökväg / till / root --languages ​​= it_IT, fr_FR, de_DE sammanställa
Lagra översättningar i en databas
För vissa tillämpningar är det användbart att låta användaren att definiera nya översättningar och / eller åsidosätta standard sådana. i18n stöder denna användning fallet med DBTranslator klassen, vilket är en underklass Translator. Vid omräkning, först ser DBTranslator i databasen: om meddelandet inte hittas, delegerar till standard gettext beteende.
DBTranslator baseras på sqlalchemy. Dess konstruktor tar ytterligare en parameter motor:
från i18n.dbtranslator import DBTranslator
från sqlalchemy import create_engine
motor = create_engine ('sqlite: ///db.sqlite')
ROOT = '/ sökväg / till / root "
SPRÅK = ['it_IT', 'fr_FR']
DEST_LANGUAGE = 'it_IT'
tr = DBTranslator (ROOT, SPRÅK, DEST_LANGUAGE, motor = motor)
print tr ._ ("hello world")
DBTranslator skapar automatiskt tabell translation_entries i DB. Därefter är det upp till ansökan att åstadkomma ett användargränssnitt för att manipulera bordet. För att testa, kan du använda add_translation () för att infoga en ny översättning i DB:
tr.add_translation ("it_IT", "Hello World", "ciao mondo")
print tr ._ ("Hello World") # utskrifter "ciao mondo"
Hur man använder en global Översättare
Genom design, försöker i18n att helt undvika globala tillstånd. Detta innebär att du kan initiera så många Översättare och DBTranslator som du vill, var och en hänvisning till en annan katalog och / eller databas. Detta är särskilt användbart för testning.
Men i praktiken de flesta projekt vill använda en global översättare som vet om de meddelanden av alla komponenter i projektet. Demo ansökan visar ett sätt att göra det på translate.py modulen:
import py
från i18n.translator import Translator
# Ställa roten av projektet till den katalog som innehåller den här filen
ROOT = py.path.local (__ fil __). Katalogsökväg ()
SPRÅK = ['it_IT', 'fr_FR', 'de_DE']
tr = Översättare (ROOT, SPRÅK, "it_IT ')
_ = Tr._
ngettext = tr.ngettext
om __name__ == '__main__':
& Nbsp; tr.cmdline (sys.argv)
På så sätt kan resten av ansökan helt enkelt importera och använda _ () och ngettext () från translate.py. Eller, vid dina önskemål, import direkt tr objektet och använda tr ._ () och tr.ngettext () för att översätta meddelanden.
De två sista raderna i koden möjliggör ett bekvämt sätt att ringa extrakt och kompilera från kommandoraden utan att manuellt specificera roten dir och de språk som stöds. Bara kör:
& Nbsp; python translate.py extrakt # ... eller kompilera

Krav :

  • Python

Liknande mjukvara

babel-obviel
babel-obviel

20 Feb 15

pylint-i18n
pylint-i18n

12 May 15

rbtranslations
rbtranslations

14 Apr 15

Annan programvara för utvecklare Antonio Cuni

pdbpp
pdbpp

11 May 15

Kommentarer till i18n

Kommentarer hittades inte
Kommentar
Slå på bilder!