2010-01-07 43 views
19

Tôi đang cố gắng tìm ra cách tốt nhất để dịch các giá trị cơ sở dữ liệu thực tế (chuỗi văn bản, không phải định dạng ngày tháng hoặc bất kỳ điều gì phức tạp) khi quốc tế hóa ứng dụng Django của tôi. Cách logic nhất mà tôi có thể đưa ra được một trong hai:Cách tốt nhất/được đề nghị để dịch các giá trị cơ sở dữ liệu Django

  • tổ chức một cơ sở dữ liệu cột cho mọi ngôn ngữ (ví dụ description_en, description_de, description_fr, ...) hoặc
  • có một cơ sở dữ liệu khác nhau cho mọi ngôn ngữ (ví dụ: schema_en, schema_fr, schema_de, ...).

Đây có phải là các tùy chọn tốt nhất hoặc có điều gì khác mà tôi bị thiếu không? Cảm ơn.

+0

cũng, đây là một ứng dụng thực sự nhỏ và đơn giản với có lẽ 5 hoặc ít bảng nhỏ hơn. – sa125

+0

Mọi cài đặt đều phải có một ngôn ngữ đơn lẻ, trái ngược với cài đặt ngôn ngữ cho mỗi người dùng? – extraneon

+0

ứng dụng hỗ trợ lựa chọn ngôn ngữ cho mỗi người dùng, vì vậy nó phải hỗ trợ tất cả các bản dịch được triển khai trong một trường hợp duy nhất – sa125

Trả lời

16

tôi đã được đọc lên trên phần mở rộng django của tôi, và tìm thấy các plugin django-modeltranslation. Nó dường như làm chính xác những gì bạn muốn nó làm. Nếu không, hãy để lại nhận xét và tôi sẽ xóa câu trả lời này :)

+0

có vẻ tốt cái nhìn đầu tiên, tôi sẽ phải chơi với nó một chút - cảm ơn! – sa125

+4

Tôi sắp đến muộn trên trang này để đề xuất giải pháp mới cho bản dịch db, bản dịch yawd - github.com/yawd/yawd-translations. Nó cho phép quản lý ngôn ngữ thông qua giao diện quản trị (tại thời gian chạy) và triển khai quản trị nội tuyến để dễ dàng quản lý bản dịch. Kể từ khi tôi đang phát triển cho yawd tôi sử dụng một bình luận thay vì một câu trả lời mới không bị buộc tội tự xúc tiến :) – ppetrid

+1

[Di chuyển trên github] (https://github.com/deschler/django-modeltranslation) –

2

Bạn có thể xem qua số thread sau đây có vẻ giống như câu hỏi bạn đang hỏi tại đây.

tôi sẽ không quan tâm nghe là giải pháp cuối cùng bạn sẽ được sử dụng như đôi khi trong tương lai tôi có thể có cùng một câu hỏi :)

3

Tôi cũng tìm thấy điều này small project mục đích là đồng bộ hóa chuỗi được bản địa hóa thành tệp tin tiêu chuẩn cho các trường của mô hình đã đăng ký.

Ví dụ:

import vinaigrette 
vinaigrette.register(YourModel, ['name', 'description']) 

Lệnh chuẩn

$ manage.py makemessages 

Sẽ duy trì thông điệp cho mỗi giá trị khác biệt tìm thấy trong các lĩnh vực đăng ký.

Tôi chưa có cơ hội thử nó.
Nhưng điều này dường như là cách đơn giản nhất để dịch dữ liệu từ db.

+1

Điều này có nghĩa là mỗi lần bạn thêm một bản ghi mới vào cơ sở dữ liệu, bạn có thể phải chạy lại các tệp makemessages và kiểm tra các tệp po nếu có một mục mới ... chỉ là một cảnh báo. Nhưng dù sao, đây là những gì tôi đang tìm kiếm, nó nhẹ hơn so với django-modeltranslation mà thêm một cột trong các bảng cần dịch cho * mỗi * ngôn ngữ ... –

Các vấn đề liên quan