django-transmeta

Yazılım ekran görüntüsü:
django-transmeta
Yazılım detaylar:
Versiyon: 0.6.11
Qayıt: 20 Feb 15
Geliştirici: Yaco Sistemas
Lisans: Ücretsiz
Popülerlik: 1

Rating: 3.0/5 (Total Votes: 1)

.

Django-Transmeta çevrilebilir Django'nın modellerinde içeriği & nbsp Django uygulaması, Her dil saklanır ve veritabanı seviyesinde farklı bir sütunda otomatik olarak yönetilmektedir.
kullanma Transmeta
Çevrilebilir modeller oluşturma
Bu modelde bak:
sınıf Kitabı (models.Model):
& Nbsp, başlıkta adı geçen = models.CharField (MAX_LENGTH = 200)
& Nbsp; açıklama = models.TextField ()
& Nbsp; vücut = models.TextField (default = '')
& Nbsp; fiyat = models.FloatField ()
Eğer açıklama ve vücut translatable yapmak istediğinizi varsayalım. Transmeta'nın kullandıktan sonra elde edilen bir modeldir:
Transmeta ithalat Transmeta gelen
sınıf Kitabı (models.Model):
& Nbsp; __ metaclass__ = Transmeta'nın
& Nbsp, başlıkta adı geçen = models.CharField (MAX_LENGTH = 200)
& Nbsp; açıklama = models.TextField ()
& Nbsp; vücut = models.TextField (default = '')
& Nbsp; fiyat = models.FloatField ()
& Nbsp; sınıf Meta:
& Nbsp; = tercüme ('açıklamasını', 'beden',)
Eğer settings.py varsayılan ve mevcut dil set emin olun:
LANGUAGE_CODE = 'ler'
Django'nın dokümanlar dediği gibi, işlevi ugettext s # kukla: ugettext lambda s =
DİLLER = (
& Nbsp; ('es', ugettext) ('İspanyolca'),
& Nbsp; ('tr', ugettext ('İngilizce')),
)
Bu ./manage.py sqlall komutu ile oluşturulan SQL ise:
BAŞLA;
(TABLO "fooapp_book" CREATE
& Nbsp; "id" seri NOT NULL PRIMARY KEY,
& Nbsp; "title" varchar (200) NOT NULL,
& Nbsp; "description_en" metin,
& Nbsp; "description_es" metin NOT NULL,
& Nbsp; "body_es" metin NOT NULL,
& Nbsp; "body_en" metin NOT NULL,
& Nbsp; "fiyat" çift hassasiyetli NULL
)
;
COMMIT;
Notlar: * Transmeta her dil için bir sütun oluşturur. Gelecekte yeni diller gerek endişe etmeyin, Transmeta sizin için bu sorunu çözer. * Bir alan Yanlış = null ve bir varsayılan değeri yoksa, Transmeta varsayılan dil, tek NOT NULL alan yaratacaktır. Diğer ikincil diller için alanlar null olacaktır. Diğer alanlar isteğe olacak ise Ayrıca, birincil dil (boş olan = true), yönetici uygulaması gerekli olacaktır. İçerik çeviri için normal bir yaklaşım ilk sahip sonra ana dilde içerik eklemek ve çünkü çevirmenler diğer dillere çevirmek için bu yapıldı. * Sen veritabanı şemasını oluşturmak için ./manage.py syncdb kullanabilirsiniz.
Python kabuğunda oynamak
Transmeta bir modelde tanımlanan her çevrilebilir alan için mevcut her dil için bir alan oluşturur. Böylece description_es, description_en ve: Alan adları dil kısa kodları, örneğin son eki vardır. Buna ek olarak, aktif dilde alan değerini almak için bir alan_adı getter oluşturur.
Bunun nasıl çalıştığını en iyi şekilde anlamak için bir Python kabuğunda biraz oynayalım:
& Gt; & gt; & gt; fooapp.models gelen defterini almak
& Gt; & gt; & gt; b = Book.objects.create (description_es = u'mi Descripcion 'description_en = u'my açıklaması')
& Gt; & gt; & gt; b.description
u'my açıklaması '
& Gt; & gt; & gt; django.utils.translation ithalat etkinleştirin gelen
& Gt; & gt; & gt; ('es') etkinleştirmek
& Gt; & gt; & gt; b.description
u'mi Descripcion '
& Gt; & gt; & gt; b.description_en
u'my açıklaması '
Yeni diller ekleme
Eğer sadece settings.py değiştirmek ve yeniden DB senkronize etmek Transmeta'nın sormak gerekir yenilerini dil eklemeniz gerekiyorsa. Örneğin, bizim projeye Fransızca eklemek için, sen settings.py içinde DİLLER eklemek gerekir:
DİLLER = (
& Nbsp; ('es', ugettext) ('İspanyolca'),
& Nbsp; ('tr', ugettext ('İngilizce')),
& Nbsp; ('fr', ugettext ('Fransız')),
)
Ve özel bir sync_transmeta_db komutu:
& Nbsp; ./ manage.py sync_transmeta_db
"Fooapp.book" model "description" alanına dilleri eksik: fr
SQL "fooapp.book" şema senkronize etmek:
& Nbsp; TABLO "fooapp_book" ALTER KOLON "description_fr" metnini ADD
(Y / n) [n]: Eğer önceki SQL yürütmek istediğinizden emin misiniz y
Yürütülüyor SQL ... Bitti
"Fooapp.book" model "beden" alanına dilleri eksik: fr
SQL "fooapp.book" şema senkronize etmek:
& Nbsp; TABLO "fooapp_book" ALTER KOLON "body_fr" metnini ADD
(Y / n) [n]: Eğer önceki SQL yürütmek istediğinizden emin misiniz y
Yürütülüyor SQL ... Bitti
Ve bitti!
Yeni çevrilebilir alanları ekleme
Şimdi (birçok kitap oluşturulan) ile bu web uygulamasını kullanarak birkaç ay sonra, hayal, sen (kitap fiyatı para bağlıdır çünkü örneğin) kitap fiyatı translatable yapmak gerekir.
Bunu başarmak için, öncelikle modelin çevrilebilir alanlar listesine fiyat ekleyin:
sınıf Kitabı (models.Model):
& Nbsp; ...
& Nbsp; fiyat = models.FloatField ()
& Nbsp; sınıf Meta:
& Nbsp; = ('açıklamasını', 'beden', 'fiyat') tercüme
Tüm bu DB şemasını güncelleştirmek için sync_transmeta_db komutunu çağırıyor şimdi bıraktı:
& Nbsp; ./ manage.py sync_transmeta_db
Mevcut diller:
& Nbsp; 1. İspanyolca
& Nbsp; 2. İngilizce
Mevcut çevrilmemiş verileri koymak için bir dil seçin.
Mevcut verilere dili nedir? (1-2): 1
"Fooapp.book" model "fiyat" alanına dilleri eksik: es, tr
SQL "fooapp.book" şema senkronize etmek:
& Nbsp; çift hassasiyetli TABLOSU "fooapp_book" KOLON "price_es" ADD ALTER
& Nbsp; GÜNCELLEME "fooapp_book" SET "price_es" = "fiyat"
& Nbsp; TABLO "fooapp_book" ALTER DEĞİL NULL SET KOLON "price_es" ALTER
& Nbsp; TABLO "fooapp_book" KOLON ADD ALTER "price_en" çift hassasiyetli
& Nbsp; TABLO "fooapp_book" DAMLA KOLON "fiyat" ALTER
(Y / n) [n]: Eğer önceki SQL yürütmek istediğinizden emin misiniz y
Yürütülüyor SQL ... Bitti
Ne bu komut yapar ki?
sync_transmeta_db komutu sadece o dillerden birine eski fiyat alanında verileri kopyalamak ... yeni çevrilebilir alan için yeni bir veritabanı sütunlar oluşturur ve komut gerçek veri için hedef dil alanı için sizden yüzden.
Yönetici entegrasyonu
Transmeta şeffaf yönetici arayüzü içine tüm çevrilebilir alanları görüntüler. Modeller aslında birçok alanları (her dil için bir tane) var çünkü bu kolay.
Admin form alanları değişiyor oldukça yaygın bir iştir, ve Transmeta kerede tüm dil alanları için bu değişiklikleri uygulamak için canonical_fieldname fayda fonksiyonu içerir. Bu iyi bir örnek ile açıklanmıştır oluyor:
Transmeta ithalat canonical_fieldname gelen
sınıf BookAdmin (admin.ModelAdmin):
& Nbsp; def formfield_for_dbfield (öz, db_field, ** kwargs):
& Nbsp; alan = süper (BookAdmin, kendini) .formfield_for_dbfield (db_field, ** kwargs)
& Nbsp; db_fieldname = canonical_fieldname (db_field)
& Nbsp; eğer db_fieldname == 'açıklaması':
& Nbsp; # Bu tüm description_ * alanlara uygulanır
& Nbsp; field.widget = MyCustomWidget ()
& Nbsp; elif field.name == 'body_es':
& Nbsp; # Bu body_es alanına geçerlidir
& Nbsp; field.widget = MyCustomWidget ()
& Nbsp; dönüş alanı

Özellikler :

  • çevrilebilir alanları ile otomatik şema oluşturma.
  • çevrilebilir alanlar Django'nın yönetici arayüzü entegre.
  • Komut yeni çevrilebilir alanları ve yeni diller eklemek için veritabanı şemasını senkronize etmek.

Bu sürümdeki yeni nedir:

  • eklendi get_mandatory_fieldname işlevi.

sürüm 0.6.9 yeni nedir:

  • çizgi ile alan adları için bir yöntem get_field_language Destek

sürüm 0.6.8 yeni nedir:

  • komut sync_transmeta_db küçük hata düzeltildi (UnboundLocalError: atama öncesinde başvurulan 'f' yerel değişken)

sürüm 0.6.7 yeni nedir:

  • Transmeta etiketleri temsil (verbose_name) değiştirin

sürüm 0.6.6 yeni nedir:


    Komut sync_transmeta_db
  • Gelişmeler ve kullanılabilirlik
  • Fix bazı hatalar
  • Belgeler

sürüm 0.6.5 yeni nedir:


    Komut sync_transmeta_db
  • Gelişmeler ve kullanılabilirlik
  • son django (komut sync_transmeta_db)
  • ile çalışır
  • mysql ile çalışır (komut sync_transmeta_db)

sürüm 0.6.4 yeni nedir:

  • modellerinde miras ile Düzeltmeler hatası.

sürüm 0.6.3 yeni nedir:

  • TRANSMETA_LANGUAGES ayarları kullanmak için izin verin.
  • Eklenenler iki seçenek sync_transmeta_db için: -y (tümü üzerinde evet varsayıyorum) ve -d (varsayılan dil kodu)

sürüm 0.6.2 yeni nedir:


    Varsayılan yerel es-ES veya en-US yazım varyantlarını olduğunda
  • çalışır.

Gereksinimler :

  • Django
  • Python

Geliştirici Diğer yazılım Yaco Sistemas

Yorumlar django-transmeta

Yorum Bulunamadı
Yorum eklemek
Görüntülerde açın!