2010-07-08 25 views

Trả lời

58

Nếu bạn muốn một cái gì đó bạn có thể sử dụng từ bên trong django, hãy thử:

from django.conf import settings 

này sẽ được định dạng ở trên, làm cho nó hoàn hảo cho chuyển nhượng trong một trong các trường lựa chọn mô hình = của bạn. (Ví dụ user_language = models.CharField(max_length=7, choices=settings.LANGUAGES))

LANGUAGES = (
    ('ar', gettext_noop('Arabic')), 
    ('bg', gettext_noop('Bulgarian')), 
    ('bn', gettext_noop('Bengali')), 
    etc.... 
    ) 

Lưu ý về việc sử dụng các thiết lập:

Note that django.conf.settings isn’t a module

+0

Đã thêm tiền thưởng vào phương thức này: vì gettext_noop() là một tra cứu lười biếng, tên ngôn ngữ sẽ được dịch dựa trên ngôn ngữ của người dùng của bạn tại thời điểm hiển thị mẫu. Có nghĩa là người dùng tiếng Anh sẽ thấy "tiếng Pháp" nhưng người dùng Pháp sẽ thấy "Francais" – Thomas

+0

là có bất kỳ Trang tham chiếu nào cho các ngôn ngữ trên .. – Hulk

+2

http://code.djangoproject.com/browser/django/trunk/django/conf /global_settings.py sẽ cung cấp cho bạn danh sách đầy đủ các ngôn ngữ hỗ trợ django ra khỏi hộp và http://docs.djangoproject.com/en/dev/ref/settings/#languages ​​cung cấp cho bạn tổng quan về cách sử dụng. Hi vọng điêu nay co ich. – Thomas

0

tôi hiểu từ Django Project rằng bạn chỉ có thể sử dụng một hàm gettext giả:

Nếu bạn định nghĩa một tùy chỉnh Cài đặt LANGUAGES, như được giải thích trong dấu đầu trước, bạn có thể đánh dấu các ngôn ngữ là chuỗi dịch - nhưng sử dụng "dummy"Chức năng, không phải là một trong django.utils.translation. Bạn không bao giờ nên nhập django.utils.translation từ bên trong tập tin cài đặt của bạn, bởi vì đó mô-đun tự nó phụ thuộc vào các thiết lập, và có thể gây ra một khẩu tròn. ".

Tôi đã mất một thời gian để tìm ra giải pháp, nhưng tôi cuối cùng đã nhận nó; sự lựa chọn của các lĩnh vực người mẫu cần phải có một tuple với các chức năng gettext thật, với một hàm lambda của hình nộm có thể được bọc trong các chức năng gettext thực như sau:

from django.utils.translation import ugettext_lazy as _ 

language = models.CharField(max_length=5, choices=map(lambda (k,v): (k, _(v)), settings.LANGUAGES), verbose_name=_('language')) 
4
from django.conf import settings 

#note settings is an object , hence you cannot import its contents 

settings.configure() 

#note LANGUAGES is a tuple of tuples 

lang_dict = dict(settings.LANGUAGES) 

#use lang_dict for your query. 

print lang_dict['en'] 

Trân

012.

Sachin

10

câu trả lời trước đề cập đến chỉ nhận LANGUAGE từ settings.py, hovewer có một cơ hội lớn mà biến này sẽ được ghi đè. Vì vậy, bạn có thể lấy danh sách đầy đủ từ django.conf.global_settings.LANGUAGES

from django.db import models 

from django.conf.global_settings import LANGUAGES 

class ModelWithLanguage(models.Model): 
    languages = models.CharField(max_length=7, choices=LANGUAGES)