django-transmeta

Screenshot der Software:
django-transmeta
Softwarebeschreibung:
Version: 0.6.11
Upload-Datum: 20 Feb 15
Entwickler: Yaco Sistemas
Lizenz: Frei
Popularität: 1

Rating: 3.0/5 (Total Votes: 1)

django-Transmeta ist ein Django-Applikation für übersetzbare Inhalte in Modellen Djangos & nbsp;. Jede Sprache wird gespeichert und automatisch in einer anderen Spalte auf Datenbankebene verwaltet.
Mit transmeta
Erstellen übersetzbar Modelle
Schauen Sie sich dieses Modell:
Klassenbuch (models.Model):
& Nbsp; title = models.CharField (max_length = 200)
& Nbsp; description = models.TextField ()
& Nbsp; body = models.TextField (default = '')
& Nbsp; Preis = models.FloatField ()
Angenommen, Sie möchten Beschreibung und Körper übersetzbar machen wollen. Das resultierende Modell nach der Verwendung von Transmeta ist:
von Transmeta Transmeta Import
Klassenbuch (models.Model):
& Nbsp; __ metaclass__ = Transmeta
& Nbsp; title = models.CharField (max_length = 200)
& Nbsp; description = models.TextField ()
& Nbsp; body = models.TextField (default = '')
& Nbsp; Preis = models.FloatField ()
& Nbsp; Klasse Meta:
& Nbsp; translate = ("Beschreibung", "Körper",)
Achten Sie darauf, die Standard und verfügbaren Sprachen in Ihrem settings.py gesetzt haben:
LANGUAGE_CODE = 'es'
ugettext = Lambda s: s # dummy ugettext Funktion, docs django sagen
SPRACHEN = (
& Nbsp; ('es', ugettext ('Spanisch')),
& Nbsp; ('en', ugettext ('Englisch')),
)
Dies ist der mit dem ./manage.py sqlall Befehl generierten SQL:
START;
CREATE TABLE "fooapp_book" (
& Nbsp; "id" Serien NOT NULL PRIMARY KEY,
& Nbsp; "title" varchar (200) NOT NULL,
& Nbsp; "description_en" Text,
& Nbsp; text "description_es" NOT NULL,
& Nbsp; text "body_es" NOT NULL,
& Nbsp; "body_en" text NOT NULL,
& Nbsp; "Preis" double precision NOT NULL
)
;
COMMIT;
Hinweise: * transmeta schafft eine Spalte für jede Sprache. Mach dir keine Sorgen brauchen neue Sprachen in der Zukunft sorgen, löst transmeta dieses Problem für Sie. * Wenn ein Feld null = falsch und nicht einen Standardwert haben, werden transmeta nur ein NOT NULL-Feld zu erstellen, für die Standardsprache. Felder für andere Sekundärsprachen sind nullable ist. Außerdem wird die Hauptsprache im Admin-App erforderlich sein, während die anderen Felder werden optional (mit leeren = True). Dies wurde getan, weil die normale Vorgehensweise für den Inhalt Übersetzung wird zunächst Inhalte hinzufügen in der Hauptsprache und später haben Übersetzer in andere Sprachen übersetzen. * Sie können ./manage.py syncdb verwenden, um Datenbankschema erstellen.
Spielen in der Python-Shell
transmeta erzeugt ein Feld für jede verfügbare Sprache für jeden zu übersetz Feld in einem Modell definiert. Description_es, description_en und so weiter: Feldnamen werden mit Sprachcodes, zB angehängt. Außerdem erstellt es eine field_name Getter, um den Feldwert in der aktiven Sprache abrufen.
Wir spielen ein bisschen in einer Python-Shell, um am besten zu verstehen, wie das funktioniert:
& Gt; & gt; & gt; von fooapp.models importieren Buch
& Gt; & gt; & gt; b = Book.objects.create (description_es = u'mi descripcion ', description_en = u'my Beschreibung)
& Gt; & gt; & gt; b.description
u'my Beschreibung '
& Gt; & gt; & gt; von django.utils.translation Import aktivieren
& Gt; & gt; & gt; aktivieren ('es')
& Gt; & gt; & gt; b.description
u'mi descripcion '
& Gt; & gt; & gt; b.description_en
u'my Beschreibung '
Hinzufügen neuer Sprachen
Wenn Sie brauchen, um neue Sprachen zu den bestehenden müssen Sie nur Ihre settings.py ändern und bitten transmeta die DB erneut, die Synchronisierung hinzuzufügen. Zum Beispiel, um Französisch zu unserem Projekt, müssen Sie es zu SPRACHEN in settings.py hinzuzufügen:
SPRACHEN = (
& Nbsp; ('es', ugettext ('Spanisch')),
& Nbsp; ('en', ugettext ('Englisch')),
& Nbsp; ('de', ugettext ("Französisch")),
)
Und führen Sie eine spezielle sync_transmeta_db Befehl ein:
& Nbsp; ./ manage.py sync_transmeta_db
Fehlende Sprachen im Feld "Beschreibung" von "fooapp.book" Modell: fr
SQL auf "fooapp.book" Schema zu synchronisieren:
& Nbsp; ALTER TABLE "fooapp_book" ADD COLUMN "description_fr" text
Sind Sie sicher, dass Sie den vorherigen SQL ausführen möchten: (y / n) [n]: y
Ausführen von SQL ... Fertig
Fehlende Sprachen in Bereich "Körper" von "fooapp.book" Modell: fr
SQL auf "fooapp.book" Schema zu synchronisieren:
& Nbsp; ALTER TABLE "fooapp_book" ADD COLUMN "body_fr" text
Sind Sie sicher, dass Sie den vorherigen SQL ausführen möchten: (y / n) [n]: y
Ausführen von SQL ... Fertig
Und fertig!
Hinzufügen neuer übersetzbaren Felder
Nun stell dir vor, dass, nach mehreren Monaten mit dieser Web-App (mit viele Bücher erstellt), müssen Sie den Buchpreis übersetzbar zu machen (zum Beispiel, weil Buchpreis ist abhängig von Währung).
Um dies zu erreichen, zuerst Preis in den übersetzbaren Felder Liste des Modells:
Klassenbuch (models.Model):
& Nbsp; ...
& Nbsp; Preis = models.FloatField ()
& Nbsp; Klasse Meta:
& Nbsp; translate = ("Beschreibung", "Körper", "Preis",)
Alles, was jetzt übrig bleibt Aufruf des Befehls sync_transmeta_db, um die DB-Schema zu aktualisieren:
& Nbsp; ./ manage.py sync_transmeta_db
Verfügbare Sprachen:
& Nbsp; 1. Spanisch
& Nbsp; 2. Englisch
Wählen Sie eine Sprache, in der die aktuellen Daten nicht übersetzten setzen.
Was ist in der Sprache der aktuellen Daten? (1-2): 1
Fehlende Sprachen im Feld "Preis" von "fooapp.book" Modell: es, en
SQL auf "fooapp.book" Schema zu synchronisieren:
& Nbsp; ALTER TABLE "fooapp_book" ADD COLUMN "price_es" double precision
& Nbsp; UPDATE "fooapp_book" SET "price_es" = "Preis"
& 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 Spalte "Preis"
Sind Sie sicher, dass Sie den vorherigen SQL ausführen möchten: (y / n) [n]: y
Ausführen von SQL ... Fertig
Was zum Teufel tut dieser Befehl?
sync_transmeta_db Befehl schafft nicht nur neue Datenbankspalten für neue übersetzbar Feld ... es Daten aus alten Preisfeld in eine der Sprachen zu kopieren, und deshalb Befehl Sie um Zielsprache Feld für Ist-Daten.
Admin-Integration
transmeta transparent werden alle übersetzbaren Felder in das Admin-Interface. Dies ist einfach, weil Modelle haben in der Tat viele Felder (eins für jede Sprache).
Ändern von Formularfeldern im Admin ist ein ziemlich gemeinsame Aufgabe, und transmeta umfasst die canonical_fieldname Nutzenfunktion, um die Änderungen für alle Sprachenfelder gleichzeitig anwenden. Es ist besser, mit einem Beispiel erklären:
von Transmeta Import canonical_fieldname
Klasse BookAdmin (admin.ModelAdmin):
& Nbsp; def formfield_for_dbfield (self, db_field, ** kwargs):
& Nbsp; Bereich = super (BookAdmin Selbst) .formfield_for_dbfield (db_field, ** kwargs)
& Nbsp; db_fieldname = canonical_fieldname (db_field)
& Nbsp; wenn db_fieldname == 'description':
& Nbsp; # Dies gilt für alle DETAILS_ * Felder
& Nbsp; field.widget = MyCustomWidget ()
& Nbsp; elif field.name == 'body_es':
& Nbsp; # gilt dies nur für body_es Feld
& Nbsp; field.widget = MyCustomWidget ()
& Nbsp; Rück Feld

Eigenschaften :

  • Automatische Schemaerstellung mit übersetzbaren Felder aus.
  • Übersetzbare Felder in Djangos Administrations-Oberfläche integriert.
  • Befehl zum Datenbankschema zu synchronisieren, um neue übersetzbaren Felder und neue Sprachen hinzufügen.

Was ist neu in dieser Pressemitteilung:

  • Hinzugefügt get_mandatory_fieldname Funktion.

Was ist neu in Version 0.6.9:

  • Unterstützung bei Verfahren get_field_language für Feldnamen mit Unterstrichen

Was ist neu in Version 0.6.8:

  • Fix einen kleinen Fehler in der Befehls sync_transmeta_db (UnboundLocalError: lokale Variable "f" vor der Zuweisung referenziert)

Was ist neu in Version 0.6.7:

  • Ändern Sie die Darstellung (verbose_name) der Transmeta-Etiketten

Was ist neu in Version 0.6.6:

  • Verbesserungen und Benutzerfreundlichkeit in der Befehls sync_transmeta_db
  • Fix einige Bugs
  • Dokumentation

Was ist neu in Version 0.6.5:

  • Verbesserungen und Benutzerfreundlichkeit in der Befehls sync_transmeta_db
  • Arbeiten mit dem letzten django (das Kommando sync_transmeta_db)
  • Arbeitet mit MySQL (das Kommando sync_transmeta_db)

Was ist neu in Version 0.6.4:

  • Fixes Fehler bei aktivierter Übernahme-Modelle.

Was ist neu in Version 0.6.3:

  • Lassen Sie eine TRANSMETA_LANGUAGES Einstellungen zu verwenden.
  • Hinzugefügt zwei Möglichkeiten sync_transmeta_db: -y (davon ausgehen, ja auf alle) und -d (Standardsprachencode)

Was ist neu in Version 0.6.2:

  • Funktioniert bei Standardgebietsschema muss Schreibvarianten, wie es-ES oder en-US.

Anforderungen :

  • Django
  • Python

Andere Software von Entwickler Yaco Sistemas

Cmsutils
Cmsutils

14 Apr 15

trac2rst
trac2rst

15 Apr 15

Kommentare zu django-transmeta

Kommentare nicht gefunden
Kommentar hinzufügen
Schalten Sie auf die Bilder!