django-transmeta

Screenshot Software:
django-transmeta
Szczegóły programowe:
Wersja: 0.6.11
Filmu: 20 Feb 15
Wywoływacz: Yaco Sistemas
Licencja: Wolny
Popularność: 1

Rating: 3.0/5 (Total Votes: 1)

django-Transmeta jest aplikacja Django treści translacji w modelach Django. & Nbsp; Każdy język jest przechowywana i zarządzana automatycznie w innej kolumnie na poziomie bazy danych.
Korzystanie Transmeta
Tworzenie modeli przetłumaczenia
Spójrz na tym modelu:
Klasa Book (models.Model):
& Nbsp; title = models.CharField (max_length = 200)
& Nbsp; Opis = models.TextField ()
& Nbsp; body = models.TextField (default = "")
& Nbsp; cena = models.FloatField ()
Załóżmy, że chcemy, aby opis i translacji ciała. Końcowy model po użyciu Transmeta jest:
z Transmeta import transmeta
Klasa Book (models.Model):
& Nbsp; __ metaclass__ = transmeta
& Nbsp; title = models.CharField (max_length = 200)
& Nbsp; Opis = models.TextField ()
& Nbsp; body = models.TextField (default = "")
& Nbsp; cena = models.FloatField ()
& Nbsp; class Meta:
& Nbsp; tłumaczyć = ("opis", "ciała",)
Upewnij się, że ustawienia domyślne i dostępne języki w settings.py:
Kod_języka = 'es'
ugettext = lambda s: s # manekina ugettext funkcji, jak mówią Django docs
JĘZYKI = (
& Nbsp; ("es", ugettext ("hiszpański")),
& Nbsp; ("en", ugettext ("English")),
)
To SQL generowany za pomocą polecenia ./manage.py sqlall:
BEGIN;
CREATE TABLE "fooapp_book" (
& Nbsp; "id" serial NOT NULL PRIMARY KEY,
& Nbsp; "title" 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; "cena" podwójnej precyzji NOT NULL
)
;
ZOBOWIĄZAĆ SIĘ;
Uwagi: * Transmeta tworzy jedną kolumnę dla każdego języka. Nie martw się o konieczności nowych języków w przyszłości, Transmeta rozwiązuje ten problem. * Jeśli jedno pole jest null = False i nie ma wartości domyślnej, Transmeta będzie utworzyć tylko jedno pole NOT NULL, dla domyślnego języka. Pola do innych językach wtórnych będzie pustych. Ponadto, podstawowym językiem będzie wymagane w aplikacji administratora, podczas gdy inne pola będzie opcjonalne (z puste = True). Zrobiono to tak, bo normalne podejście do tłumaczenia treści jest najpierw dodać zawartość w głównym języku, a później mają tłumacze przetłumaczyć na inne języki. * Możesz użyć ./manage.py syncdb stworzyć schemat bazy danych.
Grając w powłoce Pythona
Transmeta tworzy jedno pole dla każdego dostępnego języka dla każdego pola do tłumaczenia zdefiniowane w modelu. Nazwy pól są przyrostkiem krótkich kodów językowych, np: description_es, description_en, i tak dalej. Ponadto tworzy getter field_name do pobierania wartości pola w języku aktywnym.
Pobawmy się trochę w powłoce Pythona jak najlepiej zrozumieć, jak to działa:
& Gt; & gt; & gt; z fooapp.models zaimportować książkę
& Gt; & gt; & gt; b = Book.objects.create (description_es = u'mi Descripción ", description_en = u'my opis")
& Gt; & gt; & gt; b.description
u'my opis "
& Gt; & gt; & gt; z activate importu django.utils.translation
& Gt; & gt; & gt; aktywacji ('es')
& Gt; & gt; & gt; b.description
u'mi Descripción "
& Gt; & gt; & gt; b.description_en
u'my opis "
Dodawanie nowych języków
Jeśli potrzebujesz, aby dodać nowe języki do istniejących wystarczy tylko zmienić settings.py i poprosić Transmeta do synchronizacji DB ponownie. Na przykład, aby dodać Francuzów do naszego projektu, należy dodać go do języków, w settings.py:
JĘZYKI = (
& Nbsp; ("es", ugettext ("hiszpański")),
& Nbsp; ("en", ugettext ("English")),
& Nbsp; ("fr", ugettext ("francuski")),
)
I wykonanie specjalnego polecenia sync_transmeta_db:
& Nbsp; ./ manage.py sync_transmeta_db
Brak języków w polu "opis" od modelu "fooapp.book": fr
SQL do synchronizacji "fooapp.book" schemat:
& Nbsp; ALTER TABLE "fooapp_book" ADD COLUMN "description_fr" tekst
Czy jesteś pewien, że chcesz wykonać poprzedniego SQL: (y / n) [n]: y
Wykonanie SQL ... Gotowe
Brak języków w polu "body" z modelu "fooapp.book": fr
SQL do synchronizacji "fooapp.book" schemat:
& Nbsp; ALTER TABLE "fooapp_book" ADD COLUMN "body_fr" tekst
Czy jesteś pewien, że chcesz wykonać poprzedniego SQL: (y / n) [n]: y
Wykonanie SQL ... Gotowe
I gotowe!
Dodawanie nowych pól do tłumaczenia
Teraz wyobraź sobie, że po kilku miesiącach z wykorzystaniem tej aplikacji WWW (z utworzonego wiele książek), musisz dokonać cen książki tłumaczyć (na przykład dlatego, że cena książki zależy od waluty).
Aby to osiągnąć, należy najpierw dodać do listy pól ceny tłumaczonego modelu:
Klasa Book (models.Model):
& Nbsp; ...
& Nbsp; cena = models.FloatField ()
& Nbsp; class Meta:
& Nbsp; tłumaczyć = ("opis", "ciało", "cena",)
Pozostaje teraz jest wywołanie komendy sync_transmeta_db zaktualizować schemat DB:
& Nbsp; ./ manage.py sync_transmeta_db
Dostępne w językach:
& Nbsp; 1. Język Hiszpański
& Nbsp; 2. Język Angielski
Wybierz język, w którym chcesz umieścić aktualne dane nieprzetłumaczone.
Co znajduje się językiem aktualnych danych? (1-2): 1
Brak języków w "cena" pola z modelu "fooapp.book": es, pl
SQL do synchronizacji "fooapp.book" schemat:
& Nbsp; ALTER TABLE "fooapp_book" Dodaj kolumnę "price_es" podwójnej precyzji
& Nbsp; UPDATE "fooapp_book" SET "price_es" = "cena"
& Nbsp; ALTER TABLE "fooapp_book" ALTER COLUMN "price_es" SET NULL
& Nbsp; ALTER TABLE "fooapp_book" Dodaj kolumnę "price_en" podwójnej precyzji
& Nbsp; ALTER TABLE "fooapp_book" DROP COLUMN "cena"
Czy jesteś pewien, że chcesz wykonać poprzedniego SQL: (y / n) [n]: y
Wykonanie SQL ... Gotowe
Co to do cholery ta komenda?
Komenda sync_transmeta_db nie tylko tworzy nowe kolumny bazy danych dla nowego pola do tłumaczenia ... to skopiować dane ze starego dziedzinie cen w jednym z języków, dlatego polecenie poprosi o zakresie języka docelowego na rzeczywistych danych.
Integracja Admin
Transmeta przejrzyście wyświetla wszystkie przetłumaczenia pola na panelu administracyjnego. To jest łatwe, ponieważ modele w rzeczywistości wielu dziedzinach (po jednym dla każdego języka).
Zmiana pola formularza w admin jest dość wspólnym zadaniem i Transmeta obejmuje funkcję użytkową canonical_fieldname stosowania tych zmian dla wszystkich pól językowych jednocześnie. To lepiej wytłumaczyć na przykładzie:
z Transmeta import canonical_fieldname
Klasa BookAdmin (admin.ModelAdmin):
& Nbsp; def formfield_for_dbfield (self, db_field, ** kwargs):
& Nbsp; pole = super (BookAdmin, self) .formfield_for_dbfield (db_field, ** kwargs)
& Nbsp; db_fieldname = canonical_fieldname (db_field)
& Nbsp; db_fieldname == 'Opis':
& Nbsp; # to dotyczy wszystkich description_ * pola
& Nbsp; field.widget = MyCustomWidget ()
& Nbsp; Elif field.name == 'body_es ":
& Nbsp; # to ma zastosowanie tylko do pola body_es
& Nbsp; field.widget = MyCustomWidget ()
& Nbsp; pola powrót

Opis :

  • Automatyczne tworzenie schematu z polami do przetłumaczenia.
  • pola do tłumaczenia zintegrowany interfejs panelu administracyjnym.
  • Komenda do synchronizacji schematu bazy danych, aby dodać nowe przetłumaczenia pól i nowych języków.

Co nowego w tym wydaniu:

  • Dodana funkcja get_mandatory_fieldname.

Co nowego w wersji 0.6.9:

  • Pomoc w metodzie get_field_language nazw terenowych podkreślenia

Co nowego w wersji 0.6.8:

  • Fix mały błąd w sync_transmeta_db poleceń (UnboundLocalError: zmienna lokalna "f" odwoływać przed cesją)

Co nowego w wersji 0.6.7:

  • Zmień reprezentację (verbose_name) etykiet transmeta

Co nowego w wersji 0.6.6:

  • Poprawki i użyteczność w sync_transmeta_db polecenia
  • Fix kilka błędów,
  • Dokumentacja

Co nowego w wersji 0.6.5:

  • Poprawki i użyteczność w sync_transmeta_db polecenia
  • Działa z ostatniej django (sync_transmeta_db polecenia)
  • Działa z mysql (sync_transmeta_db polecenia)

Co nowego w wersji 0.6.4:

  • Poprawki błędów w modelach z dziedziczenia.

Co nowego w wersji 0.6.3:

  • Pozwól, aby użyć ustawień TRANSMETA_LANGUAGES.
  • Dodane dwie opcje sync_transmeta_db: -y (zakładać, tak na wszystko) i -d (domyślny kod języka)

Co nowego w wersji 0.6.2:

  • Działa, gdy domyślne ustawienia regionalne mają warianty ortograficzne jak es-ES lub en-US.

Wymagania :

  • Django
  • Python

Inne programy z deweloperem Yaco Sistemas

Komentarze do django-transmeta

Komentarze nie znaleziono
Dodaj komentarz
Włącz zdjęć!