django-transmeta

Phần mềm chụp màn hình:
django-transmeta
Các chi tiết về phần mềm:
Phiên bản: 0.6.11
Ngày tải lên: 20 Feb 15
Nhà phát triển: Yaco Sistemas
Giấy phép: Miễn phí
Phổ biến: 1

Rating: 3.0/5 (Total Votes: 1)

django-Transmeta là một ứng dụng Django cho nội dung dịch trong mô hình Django của & nbsp;. Mỗi ngôn ngữ được lưu trữ và quản lý tự động trong một cột khác nhau ở cấp cơ sở dữ liệu.
Sử dụng Transmeta
Tạo mô hình thể dịch
Nhìn vào mô hình này:
class Book (models.Model):
& Nbsp; title = models.CharField (max_length = 200)
& Nbsp; mô tả = models.TextField ()
& Nbsp; body = models.TextField (mặc định = '')
& Nbsp; giá = models.FloatField ()
Giả sử bạn muốn làm cho cơ thể mô tả và thể dịch. Các mô hình kết quả sau khi sử dụng Transmeta là:
từ Transmeta nhập Transmeta
class Book (models.Model):
& Nbsp; __ metaclass__ = Transmeta
& Nbsp; title = models.CharField (max_length = 200)
& Nbsp; mô tả = models.TextField ()
& Nbsp; body = models.TextField (mặc định = '')
& Nbsp; giá = models.FloatField ()
& Nbsp; class Meta:
& Nbsp; dịch = ('description', 'body',)
Hãy chắc chắn rằng bạn đã thiết lập ngôn ngữ mặc định và có sẵn trong settings.py của bạn:
LANGUAGE_CODE = 'es'
ugettext = lambda s: s # giả ugettext chức năng, như tài liệu django nói
NGÔN NGỮ = (
& Nbsp; ('es', ugettext ('Tây Ban Nha')),
& Nbsp; ('en', ugettext ('English')),
)
Đây là SQL được tạo ra với lệnh sqlall ./manage.py:
BEGIN;
CREATE TABLE "fooapp_book" (
& Nbsp; "id" serial NOT NULL PRIMARY KEY,
& Nbsp; "title" varchar (200) NOT NULL,
& Nbsp; "description_en" text,
& Nbsp; "description_es" text NOT NULL,
& Nbsp; "body_es" text NOT NULL,
& Nbsp; "body_en" text NOT NULL,
& Nbsp; "giá" độ chính xác kép NOT NULL
)
;
COMMIT;
Ghi chú: * Transmeta tạo ra một cột cho mỗi ngôn ngữ. Đừng lo lắng về việc cần ngôn ngữ mới trong tương lai, Transmeta giải quyết vấn đề này cho bạn. * Nếu một lĩnh vực là null = False và không có một giá trị mặc định, Transmeta sẽ tạo ra chỉ có một lĩnh vực NOT NULL, cho ngôn ngữ mặc định. Fields cho ngôn ngữ thứ khác sẽ được phép NULL. Ngoài ra, ngôn ngữ chính sẽ được yêu cầu trong các ứng dụng quản trị, trong khi các lĩnh vực khác sẽ là tùy chọn (với trống = True). Điều này đã được thực hiện như vậy bởi vì các phương pháp thông thường để dịch nội dung đầu tiên được thêm vào nội dung trong các ngôn ngữ chính và sau đó có phiên dịch dịch sang ngôn ngữ khác. * Bạn có thể sử dụng syncdb ./manage.py để tạo database schema.
Chơi trong bao trăn
Transmeta tạo ra một lĩnh vực cho mỗi ngôn ngữ có sẵn cho tất cả các lĩnh vực dịch được xác định trong một mô hình. Tên trường được hậu tố với ngôn ngữ mã ngắn, ví dụ như: description_es, description_en, và như vậy. Ngoài ra nó tạo ra một getter field_name để lấy các giá trị trường trong các ngôn ngữ đang hoạt động.
Hãy chơi một chút trong một vỏ python để hiểu rõ cách làm việc này:
& Gt; & gt; & gt; từ fooapp.models nhập Book
& Gt; & gt; & gt; b = Book.objects.create (description_es = u'mi Descripción ', description_en = u'my mô tả')
& Gt; & gt; & gt; b.description
Mô tả u'my '
& Gt; & gt; & gt; từ django.utils.translation nhập khẩu kích hoạt
& Gt; & gt; & gt; kích hoạt ('es')
& Gt; & gt; & gt; b.description
u'mi Descripción '
& Gt; & gt; & gt; b.description_en
Mô tả u'my '
Thêm ngôn ngữ mới
Nếu bạn cần thêm ngôn ngữ mới với những cái hiện có, bạn chỉ cần thay đổi settings.py của bạn và yêu cầu Transmeta để đồng bộ các DB nữa. Ví dụ, để thêm tiếng Pháp để dự án của chúng tôi, bạn cần phải thêm nó vào trong LANGUAGES settings.py:
NGÔN NGỮ = (
& Nbsp; ('es', ugettext ('Tây Ban Nha')),
& Nbsp; ('en', ugettext ('English')),
& Nbsp; ('fr', ugettext ('Pháp')),
)
Và thực thi một lệnh sync_transmeta_db đặc biệt:
& Nbsp; ./ manage.py sync_transmeta_db
Thiếu ngôn ngữ trong "mô tả" trường từ mô hình "fooapp.book": fr
SQL để đồng bộ hóa "fooapp.book" schema:
& Nbsp; ALTER TABLE "fooapp_book" ADD COLUMN "description_fr" text
Bạn có chắc chắn rằng bạn muốn thực hiện các SQL trước: (y / n) [n]: y
Thực hiện SQL ... Xong
Thiếu ngôn ngữ trong "cơ thể" trường từ mô hình "fooapp.book": fr
SQL để đồng bộ hóa "fooapp.book" schema:
& Nbsp; ALTER TABLE "fooapp_book" ADD COLUMN "body_fr" text
Bạn có chắc chắn rằng bạn muốn thực hiện các SQL trước: (y / n) [n]: y
Thực hiện SQL ... Xong
Và thực hiện!
Thêm các trường năng dịch mới
Bây giờ tưởng tượng rằng, sau vài tháng sử dụng ứng dụng này web (với nhiều cuốn sách tạo ra), bạn cần phải thực hiện thể dịch giá sách (ví dụ bởi vì giá sách phụ thuộc vào tiền tệ).
Để đạt được điều này, đầu tiên thêm vào danh sách các lĩnh vực giá dịch được của mô hình:
class Book (models.Model):
& Nbsp; ...
& Nbsp; giá = models.FloatField ()
& Nbsp; class Meta:
& Nbsp; dịch = ('description', 'body', 'giá',)
Tất cả những gì còn lại hiện đang kêu gọi các lệnh sync_transmeta_db để cập nhật các giản đồ DB:
& Nbsp; ./ manage.py sync_transmeta_db
Ngôn ngữ có sẵn:
& Nbsp; 1. Tây Ban Nha
& Nbsp; 2. Anh
Chọn một ngôn ngữ để đưa dữ liệu chưa được dịch hiện tại.
Ngôn ngữ của dữ liệu hiện nay là gì? (1-2): 1
Thiếu ngôn ngữ trong "giá" trường từ mô hình "fooapp.book": es, en
SQL để đồng bộ hóa "fooapp.book" schema:
& Nbsp; ALTER TABLE "fooapp_book" ADD COLUMN "price_es" độ chính xác kép
& Nbsp; UPDATE "fooapp_book" SET "price_es" = "giá"
& Nbsp; ALTER TABLE "fooapp_book" ALTER COLUMN "price_es" SET NOT NULL
& Nbsp; ALTER TABLE "fooapp_book" ADD COLUMN "price_en" độ chính xác kép
& Nbsp; ALTER TABLE "fooapp_book" DROP COLUMN "giá"
Bạn có chắc chắn rằng bạn muốn thực hiện các SQL trước: (y / n) [n]: y
Thực hiện SQL ... Xong
Cái quái gì lệnh này không?
lệnh sync_transmeta_db không chỉ tạo ra các cột cơ sở dữ liệu mới cho lĩnh vực thể dịch mới ... nó sao chép dữ liệu từ trường giá cũ thành một trong những ngôn ngữ, và đó là lý do tại sao lệnh yêu cầu bạn cho lĩnh vực ngôn ngữ đích cho dữ liệu thực tế.
Tích hợp quản trị
Transmeta minh bạch hiển thị tất cả các lĩnh vực dịch sang giao diện quản trị. Điều này là dễ dàng bởi vì các mô hình có trong thực tế, nhiều lĩnh vực (một cho mỗi ngôn ngữ).
Thay đổi biểu mẫu form trong admin là một nhiệm vụ khá phổ biến, và Transmeta bao gồm các chức năng tiện ích canonical_fieldname để áp dụng những thay đổi cho tất cả các lĩnh vực ngôn ngữ cùng một lúc. Nó giải thích tốt hơn với một ví dụ:
từ Transmeta nhập canonical_fieldname
lớp BookAdmin (admin.ModelAdmin):
& Nbsp; def formfield_for_dbfield (self, db_field, ** kwargs):
& Nbsp; trường = super (BookAdmin, tự) .formfield_for_dbfield (db_field, ** kwargs)
& Nbsp; db_fieldname = canonical_fieldname (db_field)
& Nbsp; nếu db_fieldname == 'description':
& Nbsp; # này áp dụng cho tất cả các lĩnh vực description_ *
& Nbsp; field.widget = MyCustomWidget ()
& Nbsp; elif field.name == 'body_es':
& Nbsp; # này chỉ áp dụng đối với lĩnh vực body_es
& Nbsp; field.widget = MyCustomWidget ()
& Nbsp; trường trở lại

Tính năng :

  • tạo giản đồ tự động với các lĩnh vực dịch.
  • lĩnh vực dịch được tích hợp vào giao diện quản trị của Django.
  • Command để đồng bộ hóa cơ sở dữ liệu schema để thêm các lĩnh vực mới và thể dịch các ngôn ngữ mới.

là gì mới trong phiên bản này:

  • Thêm chức năng get_mandatory_fieldname.

là gì mới trong phiên bản 0.6.9:

  • Hỗ trợ trong phương pháp get_field_language cho tên trường có dấu gạch dưới

là gì mới trong phiên bản 0.6.8:

  • Sửa chữa một lỗi nhỏ trong các lệnh sync_transmeta_db (UnboundLocalError: biến cục bộ 'f' tham chiếu trước khi chuyển nhượng)

là gì mới trong phiên bản 0.6.7:

  • Thay đổi đại diện (verbose_name) của nhãn Transmeta

là gì mới trong phiên bản 0.6.6:

  • Cải tiến và khả năng sử dụng trong lệnh sync_transmeta_db
  • Sửa chữa một số lỗi
  • Tài liệu

là gì mới trong phiên bản 0.6.5:

  • Cải tiến và khả năng sử dụng trong lệnh sync_transmeta_db
  • Làm việc với các django qua (lệnh sync_transmeta_db)
  • Làm việc với mysql (lệnh sync_transmeta_db)

là gì mới trong phiên bản 0.6.4:

  • lỗi Fixes với thừa kế trong mô hình.

là gì mới trong phiên bản 0.6.3:

  • Cho phép sử dụng một thiết lập TRANSMETA_LANGUAGES.
  • Thêm hai lựa chọn để sync_transmeta_db: -y (giả sử có trên tất cả) và d (mã ngôn ngữ mặc định)

là gì mới trong phiên bản 0.6.2:

  • Làm việc khi miền địa phương mặc định có các biến thể chính tả khi es-ES hoặc en-US.

Yêu cầu :

  • Django
  • Python

Phần mềm khác của nhà phát triển Yaco Sistemas

django-form-admin
django-form-admin

14 Apr 15

transhette
transhette

11 May 15

Cmsutils
Cmsutils

14 Apr 15

Ý kiến ​​để django-transmeta

Bình luận không
Nhập bình luận
Bật hình ảnh!