django-transmeta

Screenshot Λογισμικό:
django-transmeta
Στοιχεία Λογισμικού:
Εκδοχή: 0.6.11
Ανεβάστε ημερομηνία: 20 Feb 15
Προγραμματιστής: Yaco Sistemas
Άδεια: Δωρεάν
Δημοτικότητα: 1

Rating: 3.0/5 (Total Votes: 1)

Django-Transmeta είναι μια εφαρμογή Django για να μεταφραστούν περιεχόμενο σε μοντέλα του Django της & nbsp?. Κάθε γλώσσα αποθηκεύεται αυτόματα και διαχειρίζεται σε διαφορετική στήλη στο επίπεδο της βάσης δεδομένων.
Χρήση Transmeta
Δημιουργία μεταφράσιμων μοντέλα
Κοιτάξτε αυτό το μοντέλο:
κατηγορίας Βιβλίο (models.Model):
& Nbsp? Title = models.CharField (MAX_LENGTH = 200)
& Nbsp? Περιγραφή = models.TextField ()
& Nbsp? Σώματος = models.TextField (προεπιλογή = '')
& Nbsp? Τιμή = models.FloatField ()
Ας υποθέσουμε ότι θέλετε να κάνετε την περιγραφή και μεταφράσιμα σώμα. Το μοντέλο που προκύπτει μετά τη χρήση Transmeta είναι:
από Transmeta Transmeta εισαγωγής
κατηγορίας Βιβλίο (models.Model):
& Nbsp? __ Metaclass__ = Transmeta
& Nbsp? Title = models.CharField (MAX_LENGTH = 200)
& Nbsp? Περιγραφή = models.TextField ()
& Nbsp? Σώματος = models.TextField (προεπιλογή = '')
& Nbsp? Τιμή = models.FloatField ()
& Nbsp? Τάξη Μέτα:
& Nbsp? Μεταφράσει = («περιγραφή», «σώμα»,)
Βεβαιωθείτε ότι έχετε ρυθμίσει τις προεπιλεγμένες και τις διαθέσιμες γλώσσες settings.py σας:
LANGUAGE_CODE = "es"
ugettext = λ s: s # εικονική ugettext λειτουργία, όπως λένε docs Django του
ΓΛΩΣΣΕΣ = (
& Nbsp? ('ES', ugettext («ισπανικά»)),
& Nbsp? ('En', ugettext («αγγλικά»)),
)
Αυτή είναι η SQL δημιουργείται με την εντολή ./manage.py sqlall:
BEGIN?
CREATE TABLE "fooapp_book» (
& Nbsp? "Id" σειριακή NOT NULL PRIMARY KEY,
& Nbsp? "Τίτλος" varchar (200) NOT NULL,
& Nbsp? "Description_en" κείμενο,
& Nbsp? "Description_es" κείμενο NOT NULL,
& Nbsp? "Body_es" κείμενο NOT NULL,
& Nbsp? "Body_en" κείμενο NOT NULL,
& Nbsp? "Τιμή" διπλής ακρίβειας NOT NULL
)
?
ΔΕΣΜΕΥΟΝΤΑΙ?
Σημειώσεις: * Transmeta δημιουργεί μία στήλη για κάθε γλώσσα. Μην ανησυχείτε για την ανάγκη νέων γλωσσών στο μέλλον, Transmeta λύνει αυτό το πρόβλημα για σας. * Αν ένα πεδίο είναι μηδενική = False και δεν έχει προεπιλεγμένη τιμή, Transmeta θα δημιουργήσει μόνο ένα NOT NULL τομέα, για την προεπιλεγμένη γλώσσα. Τα πεδία για άλλες δευτερεύουσες γλώσσες θα είναι nullable. Επίσης, η κύρια γλώσσα που θα απαιτηθούν στο διαχειριστή app, ενώ οι άλλοι τομείς θα είναι προαιρετική (με κενό = True). Αυτό έγινε επειδή η κανονική προσέγγιση για τη μετάφραση του περιεχομένου είναι πρώτα να προσθέσετε περιεχόμενο στην κύρια γλώσσα και αργότερα να έχουν οι μεταφραστές μεταφράζουν σε άλλες γλώσσες. * Μπορείτε να χρησιμοποιήσετε ./manage.py syncdb για τη δημιουργία σχήματος βάσης δεδομένων.
Παίζοντας στο κέλυφος Python
Transmeta δημιουργεί ένα πεδίο για κάθε διαθέσιμη γλώσσα για κάθε μεταφράσιμων πεδίου που ορίζεται στο πρότυπο. Τα ονόματα των πεδίων επίθεμα γλώσσα σύντομους κωδικούς, π.χ. description_es, description_en, και ούτω καθεξής. Επιπλέον δημιουργεί ένα συλλέκτη FIELD_NAME να ανακτήσει την τιμή του πεδίου στο ενεργό γλώσσα.
Ας παίξουμε ένα κομμάτι σε ένα κέλυφος Python για να κατανοήσουν καλύτερα πώς αυτό λειτουργεί:
& Gt? & Gt? & Gt? από fooapp.models εισαγωγή Βιβλίο
& Gt? & Gt? & Gt? β = Book.objects.create (description_es = u'mi περιγραφη », description_en = u'my περιγραφή»)
& Gt? & Gt? & Gt? b.description
u'my περιγραφή »
& Gt? & Gt? & Gt? από django.utils.translation activate εισαγωγής
& Gt? & Gt? & Gt? ενεργοποιήσετε ("es")
& Gt? & Gt? & Gt? b.description
u'mi περιγραφη "
& Gt? & Gt? & Gt? b.description_en
u'my περιγραφή »
Η προσθήκη νέων γλωσσών
Αν χρειαστεί να προσθέσετε νέες γλώσσες στις ήδη υπάρχουσες το μόνο που χρειάζεται να αλλάξετε settings.py σας και να ζητήσετε Transmeta να συγχρονίσετε το ΣΠ ξανά. Για παράδειγμα, στη γαλλική προσθέσετε στο έργο μας, θα πρέπει να το προσθέσετε στις γλώσσες στην settings.py:
ΓΛΩΣΣΕΣ = (
& Nbsp? ('ES', ugettext («ισπανικά»)),
& Nbsp? ('En', ugettext («αγγλικά»)),
& Nbsp? («Fr», ugettext («γαλλικό»)),
)
Και να εκτελέσει κάποια ειδική εντολή sync_transmeta_db:
& Nbsp? ./ Manage.py sync_transmeta_db
Λείπουν οι γλώσσες σε πεδίο «Περιγραφή» από το μοντέλο "fooapp.book": FR
SQL για να συγχρονίσετε "fooapp.book" σχήμα:
& Nbsp? ALTER TABLE "fooapp_book" ADD ΣΤΗΛΗ "description_fr" κείμενο
Είστε σίγουροι ότι θέλετε να εκτελέσετε την προηγούμενη SQL: (y / n) [n]: y
Εκτέλεση SQL ... Έγινε
Λείπουν οι γλώσσες σε "σώμα" του πεδίου από το μοντέλο "fooapp.book": FR
SQL για να συγχρονίσετε "fooapp.book" σχήμα:
& Nbsp? ALTER TABLE "fooapp_book" ADD ΣΤΗΛΗ "body_fr" κείμενο
Είστε σίγουροι ότι θέλετε να εκτελέσετε την προηγούμενη SQL: (y / n) [n]: y
Εκτέλεση SQL ... Έγινε
Και γίνεται!
Προσθήκη νέων μεταφράσιμα πεδία
Τώρα φανταστείτε ότι, μετά από αρκετούς μήνες με τη χρήση αυτού του web app (με δημιουργήθηκαν πολλά βιβλία), θα πρέπει να κάνετε μεταφράσιμου τιμή βιβλίου (για παράδειγμα, επειδή η τιμή του βιβλίου εξαρτάται από το νόμισμα).
Για να επιτευχθεί αυτό, πρέπει πρώτα να προσθέσετε την τιμή για να μεταφραστούν πεδία λίστας του μοντέλου:
κατηγορίας Βιβλίο (models.Model):
& Nbsp? ...
& Nbsp? Τιμή = models.FloatField ()
& Nbsp? Τάξη Μέτα:
& Nbsp? Μεταφράσει = («περιγραφή», «σώμα», «τιμή»,)
Το μόνο που μένει τώρα είναι να καλέσετε την εντολή sync_transmeta_db να ενημερώσετε το σχήμα DB:
& Nbsp? ./ Manage.py sync_transmeta_db
Διαθέσιμες γλώσσες:
& Nbsp? 1. Ισπανικά
& Nbsp? 2. Τα Αγγλικα
Επιλέξτε μια γλώσσα για να θέσουν τις τρέχουσες αμετάφραστες δεδομένα.
Ποια είναι η γλώσσα των σημερινών δεδομένων; (1-2): 1
Λείπουν οι γλώσσες σε «τιμή» του πεδίου από το μοντέλο "fooapp.book": ES, en
SQL για να συγχρονίσετε "fooapp.book" σχήμα:
& Nbsp? ALTER TABLE "fooapp_book" ADD ΣΤΗΛΗ "price_es" διπλής ακρίβειας
& Nbsp? ΕΝΗΜΕΡΩΣΗ "fooapp_book" SET "price_es" = "τιμή"
& Nbsp? ALTER TABLE "fooapp_book" ALTER ΣΤΗΛΗ "price_es" SET NOT NULL
& Nbsp? ALTER TABLE "fooapp_book" ADD ΣΤΗΛΗ "price_en" διπλής ακρίβειας
& Nbsp? ALTER TABLE "fooapp_book" DROP ΣΤΗΛΗ "τιμή"
Είστε σίγουροι ότι θέλετε να εκτελέσετε την προηγούμενη SQL: (y / n) [n]: y
Εκτέλεση SQL ... Έγινε
Τι στο διάολο αυτή η εντολή κάνει;
εντολή sync_transmeta_db όχι μόνο δημιουργεί νέες στήλες της βάσης δεδομένων για τα νέα μεταφράσιμα πεδίο ... να το αντιγράψετε δεδομένα από το παλιό πεδίο των τιμών σε μία από τις γλώσσες, και αυτός είναι ο λόγος εντολή σας ρωτήσω για το πεδίο γλώσσα προορισμό για πραγματικά δεδομένα.
Ολοκλήρωση Διαχειριστής
Transmeta εμφανίζει διαφάνεια όλες μεταφράσιμων πεδία στο περιβάλλον του διαχειριστή. Αυτό είναι εύκολο, διότι τα μοντέλα έχουν στην πραγματικότητα πολλούς τομείς (ένα για κάθε γλώσσα).
Αλλαγή πεδία της φόρμας στο διαχειριστή είναι αρκετά ένα κοινό έργο, και Transmeta περιλαμβάνει τη συνάρτηση χρησιμότητας canonical_fieldname να εφαρμόσει αυτές τις αλλαγές για όλους τους τομείς γλωσσών ταυτόχρονα. Είναι εξηγείται καλύτερα με ένα παράδειγμα:
από Transmeta canonical_fieldname εισαγωγής
κατηγορία BookAdmin (admin.ModelAdmin):
& Nbsp? Def formfield_for_dbfield (self, db_field, ** kwargs):
& Nbsp? Τομέα = σούπερ (BookAdmin, αυτο) .formfield_for_dbfield (db_field, ** kwargs)
& Nbsp? Db_fieldname = canonical_fieldname (db_field)
& Nbsp? Αν db_fieldname == «περιγραφή»:
& Nbsp? # Αυτό ισχύει για όλους τους τομείς description_ *
& Nbsp? Field.widget = MyCustomWidget ()
& Nbsp? Elif field.name == «body_es»:
& Nbsp? # Αυτό ισχύει μόνο για τον τομέα body_es
& Nbsp? Field.widget = MyCustomWidget ()
& Nbsp? Πεδίο επιστροφή

Χαρακτηριστικά :

  • Αυτόματη δημιουργία σχήματος με μεταφράσιμων πεδία.
  • Οι μεταφράσιμες πεδία ενσωματωθεί στο περιβάλλον του διαχειριστή του Django.
  • Εντολή να συγχρονίσετε σχήμα βάσης δεδομένων για την προσθήκη νέων μεταφράσιμο τομείς και νέες γλώσσες.

Τι είναι καινούργιο σε αυτήν την έκδοση:

  • Προστέθηκε λειτουργία get_mandatory_fieldname.

Τι είναι καινούργιο στην έκδοση 0.6.9:

  • Υποστήριξη στη μέθοδο get_field_language για τα ονόματα των πεδίων με παύλες

Τι είναι καινούργιο στην έκδοση 0.6.8:

  • Fix ένα μικρό σφάλμα στο sync_transmeta_db εντολή (UnboundLocalError: τοπική μεταβλητή «f» αναφέρεται πριν από το διορισμό)

Τι είναι καινούργιο στην έκδοση 0.6.7:

  • Αλλάξτε την εκπροσώπηση (verbose_name) των ετικετών Transmeta

Τι είναι καινούργιο στην έκδοση 0.6.6:

  • Βελτιώσεις και χρηστικότητα στο sync_transmeta_db εντολή
  • καθορίσει ορισμένα σφάλματα
  • Τεκμηρίωση

Τι είναι καινούργιο στην έκδοση 0.6.5:

  • Βελτιώσεις και χρηστικότητα στο sync_transmeta_db εντολή
  • Λειτουργεί με την τελευταία Django (η sync_transmeta_db εντολή)
  • Λειτουργεί με MySQL (το sync_transmeta_db εντολή)

Τι είναι καινούργιο στην έκδοση 0.6.4:

  • Διορθώσεις σφαλμάτων με την κληρονομικότητα σε μοντέλα.

Τι είναι καινούργιο στην έκδοση 0.6.3:

  • επιτρέψει τη χρήση ενός ρυθμίσεις TRANSMETA_LANGUAGES.
  • Προστέθηκε δύο επιλογές για να sync_transmeta_db: -y (υποθέτω ναι σε όλα) και -D (προεπιλεγμένος κωδικός γλώσσα)

Τι είναι καινούργιο στην έκδοση 0.6.2:

  • Λειτουργεί όταν η προκαθορισμένη τοπικοποίηση έχουν ορθογραφικές παραλλαγές ως es-ES ή en-ΗΠΑ.

Απαιτήσεις :

  • Django
  • Python

Άλλο λογισμικό του προγραμματιστή Yaco Sistemas

Σχόλια για django-transmeta

Τα σχόλια δεν βρέθηκε
προσθήκη σχολίου
Ενεργοποιήστε τις εικόνες!