django-transmeta

Skjermbilde programvare:
django-transmeta
Prog.varedetaljer:
Versjon: 0.6.11
Last opp dato: 20 Feb 15
Utvikler: Yaco Sistemas
Lisens: Gratis
Popularitet: 1

Rating: 3.0/5 (Total Votes: 1)

django-Transmeta er et Django app for oversett innhold i Django modeller. & Nbsp; Hvert språk lagres og styres automatisk i en annen kolonne på databasenivå.
Ved hjelp av Transmeta
Opprette oversett modeller
Se på denne modellen:
klasse Bok (models.Model):
& Nbsp; title = models.CharField (MAX_LENGTH = 200)
& Nbsp; description = models.TextField ()
& Nbsp; body = models.TextField (standard = '')
& Nbsp; pris = models.FloatField ()
Anta at du vil gjøre beskrivelse og kropp oversett. Den resulterende modellen etter bruk Transmeta er:
fra Transmeta import Transmeta
klasse Bok (models.Model):
& Nbsp; __ metaclass__ = Transmeta
& Nbsp; title = models.CharField (MAX_LENGTH = 200)
& Nbsp; description = models.TextField ()
& Nbsp; body = models.TextField (standard = '')
& Nbsp; pris = models.FloatField ()
& Nbsp; klasse Meta:
& Nbsp; sette = ('beskrivelse', 'body',)
Kontroller at du har satt standard og tilgjengelige språk i din settings.py:
LANGUAGE_CODE = 'es'
ugettext = lambda s: s # dummy ugettext funksjon, som Djangos docs si
SPRÅK = (
& Nbsp; ('es', ugettext ('spansk')),
& Nbsp; ('no', ugettext ('engelsk')),
)
Dette er SQL generert med ./manage.py sqlall kommandoen:
BEGIN;
CREATE TABLE "fooapp_book" (
& Nbsp; "id" serie NOT NULL PRIMARY KEY,
& Nbsp; "title" varchar (200) NOT NULL,
& Nbsp; "description_en" tekst,
& Nbsp; "description_es" tekst NOT NULL,
& Nbsp; "body_es" tekst NOT NULL,
& Nbsp; "body_en" tekst NOT NULL,
& Nbsp; "pris" dobbel presisjon NOT NULL
)
;
COMMIT;
Merknader: * Transmeta skaper en kolonne for hvert språk. Ikke bekymre deg om at du trenger nye språk i fremtiden, løser Transmeta dette problemet for deg. * Hvis et felt er null = False og ikke har en standardverdi, vil Transmeta bare lage ett NOT NULL felt, for standardspråket. Felt for andre sekundære språk vil kunne ha nullverdier. Dessuten vil det primære språket være nødvendig i admin app, mens de andre feltene vil være valgfritt (med blank = True). Dette ble gjort slik fordi normal tilnærming for innhold oversettelsen er først legge innhold i hovedspråket og senere har oversettere sette til andre språk. * Du kan bruke ./manage.py SyncDB å opprette databaseskjema.
Spille i python shell
Transmeta skaper ett felt for hver tilgjengelige språket for hver oversett felt definert i en modell. Feltnavn med suffikset språk korte koder, for eksempel: description_es, description_en, og så videre. I tillegg skaper det en FIELD_NAME getter å hente feltverdien i det aktive språket.
La oss leke litt i en python shell å best forstå hvordan dette fungerer:
& Gt; & gt; & gt; fra fooapp.models importere Book
& Gt; & gt; & gt; b = Book.objects.create (description_es = u'mi Descripcion ', description_en = u'my beskrivelse')
& Gt; & gt; & gt; b.description
u'my beskrivelse '
& Gt; & gt; & gt; fra django.utils.translation import activate
& Gt; & gt; & gt; aktivere ('es')
& Gt; & gt; & gt; b.description
u'mi Descripcion '
& Gt; & gt; & gt; b.description_en
u'my beskrivelse '
Legge til nye språk
Hvis du trenger å legge til nye språk til de eksisterende du trenger bare å endre settings.py og be Transmeta for å synkronisere DB igjen. For eksempel, for å legge fransk til vårt prosjekt, må du legge den til språkene i settings.py:
SPRÅK = (
& Nbsp; ('es', ugettext ('spansk')),
& Nbsp; ('no', ugettext ('engelsk')),
& Nbsp; (eller no, ugettext ('fransk')),
)
Og gjennomføre en spesiell sync_transmeta_db kommando:
& Nbsp; ./ manage.py sync_transmeta_db
Mangler språk i "beskrivelse" -feltet fra "fooapp.book" modell: fr
SQL for å synkronisere "fooapp.book" schema:
& Nbsp; ALTER TABLE "fooapp_book" ADD KOLONNE "description_fr" tekst
Er du sikker på at du vil utføre den forrige SQL: (y / n) [n]: y
Utfører SQL ... Ferdig
Mangler språk i "kroppen" feltet fra "fooapp.book" modell: fr
SQL for å synkronisere "fooapp.book" schema:
& Nbsp; ALTER TABLE "fooapp_book" ADD KOLONNE "body_fr" tekst
Er du sikker på at du vil utføre den forrige SQL: (y / n) [n]: y
Utfører SQL ... Ferdig
Og gjort!
Legge til nye oversett felt
Nå forestille seg at etter flere måneder som bruker denne web app (med mange bøker opprettet), må du gjøre boken prissette (for eksempel fordi boken Prisen avhenger av valuta).
For å oppnå dette, må du først legge pris til modellens oversett liste felt:
klasse Bok (models.Model):
& Nbsp; ...
& Nbsp; pris = models.FloatField ()
& Nbsp; klasse Meta:
& Nbsp; sette = ('beskrivelse', 'body', 'pris',)
Alt som gjenstår nå er å ringe sync_transmeta_db kommandoen for å oppdatere DB skjemaet:
& Nbsp; ./ manage.py sync_transmeta_db
Tilgjengelige språk:
& Nbsp; en. Spansk
& Nbsp; 2. Engelsk
Velg et språk for å sette dagens uoversatt data.
Hva er språket i dagens data? (1-2): 1
Mangler språk i "pris" -feltet fra "fooapp.book" modell: es, no
SQL for å synkronisere "fooapp.book" schema:
& Nbsp; ALTER TABLE "fooapp_book" ADD Column "price_es" dobbel presisjon
& Nbsp; Update "fooapp_book" set "price_es" = "pris"
& Nbsp; ALTER TABLE "fooapp_book" ALTER Column "price_es" SET NOT NULL
& Nbsp; ALTER TABLE "fooapp_book" ADD KOLONNE "price_en" dobbel presisjon
& Nbsp; ALTER TABLE "fooapp_book" DROP KOLONNE "pris"
Er du sikker på at du vil utføre den forrige SQL: (y / n) [n]: y
Utfører SQL ... Ferdig
Hva i helvete denne kommandoen gjør?
sync_transmeta_db kommando ikke bare skaper nye database kolonner for ny oversett feltet ... det kopiere data fra gamle prisen felt inn i en av språk, og det er derfor kommandoen be deg om reisemålet språk feltet for faktiske data.
Admin integrering
Transmeta viser transparent alle oversett feltene inn i admin-grensesnittet. Dette er enkelt fordi modellene har faktisk mange felt (ett for hvert språk).
Endre skjemafelt i admin er ganske vanlig oppgave, og Transmeta inkluderer canonical_fieldname nyttefunksjonen til å anvende disse endringene for alle språkfelt samtidig. Det er bedre forklart med et eksempel:
fra Transmeta import canonical_fieldname
klasse BookAdmin (admin.ModelAdmin):
& Nbsp; def formfield_for_dbfield (selvstendig, db_field, ** kwargs):
& Nbsp; felt = super (BookAdmin, selv) .formfield_for_dbfield (db_field, ** kwargs)
& Nbsp; db_fieldname = canonical_fieldname (db_field)
& Nbsp; hvis db_fieldname == 'beskrivelse':
& Nbsp; # dette gjelder alle description_ * felt
& Nbsp; field.widget = MyCustomWidget ()
& Nbsp; elif field.name == 'body_es':
& Nbsp; # gjelder dette bare for body_es felt
& Nbsp; field.widget = MyCustomWidget ()
& Nbsp; retur felt

Egenskaper :

  • Automatisk skjema skapelse med oversett felt.
  • oversett felt integrert i Djangos admin grensesnitt.
  • Kommando for å synkronisere databaseskjema for å legge til nye oversett felt og nye språk.

Hva er nytt i denne utgaven:

  • Lagt get_mandatory_fieldname funksjon.

Hva er nytt i versjon 0.6.9:

  • Support i metode get_field_language for feltnavn med understrek

Hva er nytt i versjon 0.6.8:

  • Fix en liten bug i kommando sync_transmeta_db (UnboundLocalError: lokal variabel 'f' referert før oppdraget)

Hva er nytt i versjon 0.6.7:

  • Endre representasjon (verbose_name) av Transmeta etiketter

Hva er nytt i versjon 0.6.6:

  • Forbedringer og brukervennlighet i kommando sync_transmeta_db
  • fikse noen bugs
  • Dokumentasjon

Hva er nytt i versjon 0.6.5:

  • Forbedringer og brukervennlighet i kommando sync_transmeta_db
  • Fungerer med den siste django (kommandoen sync_transmeta_db)
  • Fungerer med mysql (kommandoen sync_transmeta_db)

Hva er nytt i versjon 0.6.4:

  • Løser feil med arv i modeller.

Hva er nytt i versjon 0.6.3:

  • Tillat å bruke en TRANSMETA_LANGUAGES innstillinger.
  • lagt to alternativer for å sync_transmeta_db: -y (anta ja på alle) og -d (standard språkkoden)

Hva er nytt i versjon 0.6.2:

  • Fungerer når standard locale har stavevarianter som es-ES eller no-no.

Krav :

  • Django
  • Python

Annen programvare fra utvikleren Yaco Sistemas

Merengue
Merengue

14 Apr 15

django-autoreports
django-autoreports

14 Apr 15

transhette
transhette

11 May 15

Kommentarer til django-transmeta

Kommentarer ikke funnet
Legg til kommentar
Slå på bilder!