django-transmeta

Software screenshot:
django-transmeta
Software informatie:
Versie: 0.6.11
Upload datum: 20 Feb 15
Ontwikkelaar: Yaco Sistemas
Licentie: Gratis
Populariteit: 1

Rating: 3.0/5 (Total Votes: 1)

django-Transmeta is een Django app voor vertaalbaar gehalte in Django's modellen & nbsp;. Elke taal wordt opgeslagen en automatisch beheerd in een andere kolom in de database niveau.
Met behulp van Transmeta
Het creëren van vertaalbaar modellen
Kijk eens naar dit model:
klasse Boek (models.Model):
& Nbsp; title = models.CharField (max_length = 200)
& Nbsp; description = models.TextField ()
& Nbsp; body = models.TextField (default = '')
& Nbsp; prijs = models.FloatField ()
Stel, u wilt beschrijving en lichaam vertaalbaar te maken. Het resulterende model na het gebruik van Transmeta is:
van Transmeta import Transmeta
klasse Boek (models.Model):
& Nbsp; __ metaclass__ = Transmeta
& Nbsp; title = models.CharField (max_length = 200)
& Nbsp; description = models.TextField ()
& Nbsp; body = models.TextField (default = '')
& Nbsp; prijs = models.FloatField ()
& Nbsp; klasse Meta:
& Nbsp; vertalen = ('beschrijving', 'body',)
Zorg ervoor dat u de standaard en de beschikbare talen hebt ingesteld in uw settings.py:
LANGUAGE_CODE = 'es'
ugettext = lambda s: s # dummy ugettext functie, zoals docs Django's zeggen
TALEN = (
& Nbsp; ('es', ugettext ('Spaanse')),
& Nbsp; ('nl', ugettext ('Engels')),
)
Dit is de SQL gegenereerd met ./manage.py sqlall commando:
BEGIN;
CREATE TABLE "fooapp_book" (
& Nbsp; "id" serial NOT NULL PRIMARY KEY,
& Nbsp; "titel" varchar (200) NOT NULL,
& Nbsp; "description_en" tekst,
& Nbsp; "description_es" text NOT NULL,
& Nbsp; "body_es" text NOT NULL,
& Nbsp; "body_en" text NOT NULL,
& Nbsp; "prijs" double precision NOT NULL
)
;
COMMIT;
Opmerkingen: * transmeta creëert één kolom voor elke taal. Maak je geen zorgen over hoeven nieuwe talen in de toekomst, Transmeta lost dit probleem voor u. * Als een veld null = False en niet een standaard waarde hebben, zal Transmeta slechts één NOT NULL veld te creëren, voor de standaardtaal. Velden voor andere secundaire talen zullen nullable zijn. Ook zal de primaire taal vereist worden in de admin app, terwijl de andere velden optioneel zal zijn (met spatie = True). Dit werd gedaan omdat de normale benadering voor de inhoud vertaling eerste gehalte is toe te voegen in de hoofdtaal en later hebben vertalers vertalen naar andere talen. * U kunt ./manage.py syncdb gebruiken om database schema te maken.
Spelen in de python shell
Transmeta creëert één veld voor elke beschikbare taal voor elke vertaalbaar veld gedefinieerd in een model. Veldnamen worden suffix taal korte codes, bijvoorbeeld: description_es, description_en, en ga zo maar door. Bovendien creëert een field_name getter de veldwaarde in de actieve taal halen.
Laten we spelen een beetje in een python shell om het beste te begrijpen hoe dit werkt:
& Gt; & gt; & gt; van fooapp.models importeren Boek
& Gt; & gt; & gt; b = Book.objects.create (description_es = u'mi descripcion ', description_en = u'my omschrijving')
& Gt; & gt; & gt; b.description
u'my omschrijving '
& Gt; & gt; & gt; van django.utils.translation import activate
& Gt; & gt; & gt; activeren ('es')
& Gt; & gt; & gt; b.description
u'mi descripcion '
& Gt; & gt; & gt; b.description_en
u'my omschrijving '
Het toevoegen van nieuwe talen
Als u nodig hebt om nieuwe talen toe te voegen aan de bestaande hoeft u alleen uw settings.py veranderen en vragen Transmeta opnieuw te synchroniseren van de DB. Bijvoorbeeld om Frans naar ons project toe te voegen, moet u deze toevoegen aan talen in settings.py:
TALEN = (
& Nbsp; ('es', ugettext ('Spaanse')),
& Nbsp; ('nl', ugettext ('Engels')),
& Nbsp; ('fr', ugettext ('Frans')),
)
En uitvoeren van een speciale sync_transmeta_db commando:
& Nbsp; ./ manage.py sync_transmeta_db
Ontbrekende talen in het veld "omschrijving" van "fooapp.book" model: fr
SQL naar "fooapp.book" schema te synchroniseren:
& Nbsp; ALTER TABLE "fooapp_book" ADD COLUMN "description_fr" text
Weet u zeker dat u wilt de vorige SQL uitvoeren: (y / n) [n]: y
Het uitvoeren van SQL ... Done
Ontbrekende talen in het veld "body" van "fooapp.book" model: fr
SQL naar "fooapp.book" schema te synchroniseren:
& Nbsp; ALTER TABLE "fooapp_book" ADD COLUMN "body_fr" text
Weet u zeker dat u wilt de vorige SQL uitvoeren: (y / n) [n]: y
Het uitvoeren van SQL ... Done
En klaar!
Het toevoegen van nieuwe vertaalbaar velden
Stel je nu voor dat, na enkele maanden gebruik van deze web-app (met veel boeken gemaakt), moet je boek prijs vertaalbaar te maken (bijvoorbeeld omdat boek prijs is afhankelijk van valuta).
Om dit te bereiken, de eerste prijs toe te voegen aan vertaalbaar lijst van het model velden:
klasse Boek (models.Model):
& Nbsp; ...
& Nbsp; prijs = models.FloatField ()
& Nbsp; klasse Meta:
& Nbsp; vertalen = ('beschrijving', 'body', 'prijs',)
Het enige dat nu overblijft is het aanroepen van de sync_transmeta_db opdracht om de DB-schema bij te werken:
& Nbsp; ./ manage.py sync_transmeta_db
Beschikbare talen:
& Nbsp; 1. Spaans
& Nbsp; 2. Engels
Kies een taal waarin de huidige onvertaald gegevens gezet.
Wat is de taal van de huidige gegevens? (1-2): 1
Ontbrekende talen in het veld "prijs" van "fooapp.book" model: es, nl
SQL naar "fooapp.book" schema te synchroniseren:
& Nbsp; ALTER TABLE "fooapp_book" ADD COLUMN "price_es" double precision
& Nbsp; UPDATE "fooapp_book" SET "price_es" = "prijs"
& Nbsp; ALTER TABLE "fooapp_book" ALTER COLUMN "price_es" SET NOT NULL
& Nbsp; ALTER TABLE "fooapp_book" ADD COLUMN "price_en" double precision
& Nbsp; ALTER TABLE "fooapp_book" DROP kolom "prijs"
Weet u zeker dat u wilt de vorige SQL uitvoeren: (y / n) [n]: y
Het uitvoeren van SQL ... Done
Wat de hel dit commando doet?
sync_transmeta_db opdracht niet alleen creëert nieuwe database kolommen voor nieuwe vertaalbaar veld ... het de gegevens van de oude prijs veld te kopiëren naar een van de talen, en dat is de reden waarom commando vragen u voor de bestemming taal veld voor de actuele gegevens.
Admin integratie
Transmeta toont transparant alle vertaalbaar velden in de admin interface. Dit is gemakkelijk omdat modellen in feite vele gebieden (één voor elke taal).
Formulier gebieden te veranderen in de admin is nogal een gemeenschappelijke taak, en Transmeta omvat de canonical_fieldname nutsfunctie aan deze veranderingen voor alle talen velden tegelijk toepassen. Het is beter uitgelegd met een voorbeeld:
van Transmeta import canonical_fieldname
klasse BookAdmin (admin.ModelAdmin):
& Nbsp; def formfield_for_dbfield (zelf, db_field, ** kwargs):
& Nbsp; gebied = super (BookAdmin, zelf) .formfield_for_dbfield (db_field, ** kwargs)
& Nbsp; db_fieldname = canonical_fieldname (db_field)
& Nbsp; als db_fieldname == 'beschrijving':
& Nbsp; # dit geldt voor alle description_ * velden
& Nbsp; field.widget = MyCustomWidget ()
& Nbsp; Elif field.name == 'body_es':
& Nbsp; # geldt dit alleen voor body_es veld
& Nbsp; field.widget = MyCustomWidget ()
& Nbsp; return veld

Kenmerken

  • Automatische schema creatie met vertaalbaar velden.
  • Vertaalbare velden geïntegreerd in Django's admin interface.
  • Opdracht om database schema synchroniseren met nieuwe vertaalbaar velden en nieuwe talen toe te voegen.

Wat is nieuw in deze release:

  • Toegevoegd get_mandatory_fieldname functie.

Wat is nieuw in versie 0.6.9:

  • Ondersteuning bij methode get_field_language voor veldnamen met underscores

Wat is nieuw in versie 0.6.8:

  • Een kleine bug in de opdracht sync_transmeta_db (UnboundLocalError: lokale variabele 'f' verwezen vóór de toewijzing)

Wat is nieuw in versie 0.6.7:

  • Wijzig de representatie (verbose_name) van de Transmeta labels

Wat is nieuw in versie 0.6.6:

  • Verbeteringen en bruikbaarheid in de opdracht sync_transmeta_db
  • Bevestig een aantal bugs
  • Documentatie

Wat is nieuw in versie 0.6.5:

  • Verbeteringen en bruikbaarheid in de opdracht sync_transmeta_db
  • De werken met de laatste Django (het commando sync_transmeta_db)
  • Werkt met mysql (het commando sync_transmeta_db)

Wat is nieuw in versie 0.6.4:

  • Fixes fout met erfenis in modellen.

Wat is nieuw in versie 0.6.3:

  • Laat een TRANSMETA_LANGUAGES instellingen te gebruiken.
  • Toegevoegd twee opties om sync_transmeta_db: -y (veronderstellen ja op alle) en -d (standaard taalcode)

Wat is nieuw in versie 0.6.2:

  • Werken bij standaardlandinstelling hebben spellingsvarianten als es-ES of en-US.

Eisen

  • Django
  • Python

Andere software van ontwikkelaar Yaco Sistemas

trac2rst
trac2rst

15 Apr 15

transhette
transhette

11 May 15

Reacties op django-transmeta

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