i18n

Software screenshot:
i18n
Software informatie:
Versie: 0.1
Upload datum: 14 Apr 15
Ontwikkelaar: Antonio Cuni
Licentie: Gratis
Populariteit: 17

Rating: 3.0/5 (Total Votes: 1)

i18n is een pakket dat probeert de workflow en de ontwikkeling van geïnternationaliseerde toepassingen & nbsp vereenvoudigen;. Het is een dunne wrapper rond bestaande instrumenten, in het bijzonder gettext en babel.
Basic gebruik
# Demo.py
#
van i18n.translator import Translator
supported_languages ​​= ['it_IT', 'fr_FR', 'de_DE']
# Activeren Italiaanse vertalingen
tr = Translator ('/ pad / naar / root', supported_languages, 'it_IT')
afdruk tr ._ ('Hallo wereld!')
waarin / pad / naar / root / is de root directory van uw project. Wanneer een instantie, de Translator klasse maakt automatisch een map met de naam / pad / naar / root / talen waarin de vertalingen opgeslagen.
Het halen van boodschappen
Voordat het doen van de werkelijke vertaling, moet u de berichten uit je bronbestanden, met een beroep op het extract opdracht in het i18n module, dat is een wrapper rond pybabel extract en pybabel update:
& Nbsp; python -m i18n --root = / pad / naar / root --languages ​​= it_IT, fr_FR, de_DE extract
extract ziet er voor alle boodschappen in gewikkeld oproepen naar _ (), gettext () of ngettext () en produceert een bestand genaamd talen / template.pot. Dit is een standaard gettext po onderzoekdossier waarin alle berichten die in de applicatie bevat.
Bovendien, extract () creëert ook een boodschap catalogus-bestand voor elk van de ondersteunde talen als talen / $ CODE / LC_MESSAGES / messages.po, waar $ CODE is een van de in supported_languages ​​(it_IT, fr_FR en de_DE in het voorbeeld hierboven genoemde talen ).
De catalogus bestanden zijn nu klaar om te worden vertaald met behulp van een van de vele bestaande instrumenten, bijvoorbeeld QT Taalkundige of Poedit. Voor de juiste werking van de toepassing, dient de gehele taal / hiërarchie te behouden. Wij stellen voor om de verschillende messages.po bestanden in Version Control System samen volgen met de andere bestanden die behoren tot de applicatie.
berichten bijwerken
Tijdens de ontwikkeling van de applicatie, zal je zeker nieuwe berichten toe te vertalen. Het extract commando automatisch afhandelen dit geval: indien hij vaststelt bestaande catalogus bestanden, de inhoud (met inbegrip van de bestaande vertalingen) wordt samengevoegd met de nieuw gewonnen berichten.
Het samenstellen van catalogi
Het is noodzakelijk om de catalogus bestanden compileren voordat u deze met gettext. Standaard zijn onze Translator object verzamelt automatisch alle catalogi gevonden in talen /, het produceren van de overeenkomstige .mo bestanden. De compilatie gebeurt alleen wanneer de catalogus bestand aangepast is. Dit betekent dat in de meeste gevallen hoeft u geen zorgen te maken over de samenstelling van de catalogi.
Als u liever meer controle over deze stap, kunt u autocompile = False doorgeven aan de bouwer van Translator en compileren ze handmatig vanaf de opdrachtregel:
& Nbsp; python -m i18n --root = / pad / naar / root --languages ​​= it_IT, fr_FR, de_DE compileren
Het opslaan van vertalingen in een database
Voor sommige toepassingen is het nuttig om de gebruiker nieuwe vertalingen definiëren en / of overschrijven de standaard instellingen laten. i18n steunt deze use case met DBTranslator klasse die een subklasse van vertaler. Bij het vertalen, DBTranslator kijkt eerst in de database: als het bericht niet wordt gevonden, afgevaardigden naar de standaard gettext gedrag.
DBTranslator is gebaseerd op sqlalchemy. De aannemer neemt een extra parameter engine:
van i18n.dbtranslator import DBTranslator
van sqlalchemy import create_engine
motor = create_engine ('sqlite: ///db.sqlite')
ROOT = "/ pad / naar / root '
TALEN = ['it_IT', 'fr_FR']
DEST_LANGUAGE = 'it_IT'
tr = DBTranslator (ROOT, TALEN, DEST_LANGUAGE, motor = motor)
afdruk tr ._ ("Hello World")
DBTranslator maakt automatisch de tafel translation_entries in de DB. Vervolgens is het aan de applicatie een gebruikersinterface om de tafel te manipuleren verschaffen. Voor het testen, kunt u de methode add_translation () gebruiken om een ​​nieuwe vertaling in het DB te voegen:
tr.add_translation ("it_IT", "Hello World", "ciao mondo")
afdruk tr ._ ("Hello World") # prints "ciao mondo"
Hoe maak je gebruik maken van een globale Translator
Door het ontwerp, i18n probeert aan mondiale toestand volledig te vermijden. Dit betekent dat u kunt instantiëren zoveel Translator en DBTranslator als je wilt, elk verwijzend naar een andere map en / of database. Dit is met name handig voor het testen.
In de praktijk meeste projecten willen een globale vertaler die kent de berichten van alle componenten in het project gebruikt. De demo applicatie toont een manier om het te doen in de translate.py module:
import py
van i18n.translator import Translator
# Zet de wortel van het project naar de map met het bestand
ROOT = py.path.local (__ __-bestand). Dirpath ()
TALEN = ['it_IT', 'fr_FR', 'de_DE']
tr = Translator (ROOT, TALEN, 'it_IT')
_ = Tr._
ngettext = tr.ngettext
Als __name__ == '__main__':
& Nbsp; tr.cmdline (sys.argv)
Op deze manier kan de rest van de applicatie gewoon importeren en _ () en ngettext () uit translate.py. Of, bij uw voorkeur, import rechtstreeks de tr object en gebruik tr ._ () en tr.ngettext () om berichten te vertalen.
De laatste twee regels van de code kan een handige manier om extract te bellen en te compileren vanaf de opdrachtregel zonder de wortel dir en de ondersteunde talen handmatig op te geven. Start gewoon:
& Nbsp; python translate.py extract # ... of compileren

Eisen

  • Python

Vergelijkbare software

uim
uim

14 Apr 15

gtranslator
gtranslator

14 Apr 15

locales-test
locales-test

14 Apr 15

setup-gettext
setup-gettext

3 Jun 15

Andere software van ontwikkelaar Antonio Cuni

pdbpp
pdbpp

11 May 15

Reacties op i18n

Reacties niet gevonden
Commentaar toe te voegen
Zet op de beelden!