Làm cách nào để lấy ngôn ngữ hiện tại trong luồng hiện tại trong một mô hình hoặc trong quản trị viên?
Câu trả lời:
Các hàm được quan tâm đặc biệt sẽ django.utils.translation.get_language()
trả về ngôn ngữ được sử dụng trong luồng hiện tại. Xem tài liệu .
Hoặc bạn cũng có thể nhận được điều này trong quan điểm của mình
yêu cầu.LANGUAGE_CODE
django.utils.translation.get_language()
django.utils.translation.get_language()
luôn luôn là một giải pháp tốt hơn.
Hãy cẩn thận với phương pháp bạn sử dụng để lấy ngôn ngữ . Tùy thuộc vào phương pháp nào, Django sẽ sử dụng các cách và thông tin khác nhau để xác định ngôn ngữ phù hợp để sử dụng.
Khi sử dụng django.utils.translation.get_language()
hàm, nó được liên kết với ngôn ngữ luồng . Trước Django 1.8, nó luôn quay lại settings.LANGUAGE_CODE
khi bản dịch bị tắt. Nếu bạn muốn ghi đè ngôn ngữ luồng theo cách thủ công, bạn có thể sử dụng các hàm override()
hoặc activate()
, không được đặt tên rõ ràng, nhưng tốt, vẫn hữu ích:
from django.utils import translation
with translation.override('fr'):
print(_("Hello")) # <= will be translated inside the with block
translation.activate('fr') # <= will change the language for the whole thread.
# You then have to manually "restore" the language with another activate()
translation.activate('en') # <= change languages manually
Nếu bạn muốn django kiểm tra đường dẫn và / hoặc yêu cầu (cookie ngôn ngữ, ...) , thông thường hơn rất nhiều, ví dụ: www.example.com/en/<somepath>
vs www.example.com/fr/<somepath>
, use django.utils.translation.get_language_from_request(request, check_path=False)
. Ngoài ra, nó sẽ luôn trả về một ngôn ngữ hợp lệ được đặt trongsettings.LANGUAGES
Tôi không dễ dàng tìm thấy những khác biệt này thông qua Google về chủ đề này, vì vậy đây là nó để tham khảo thêm.
django.utils.translation
, không phải bản dịch. Có một lỗi chính tả trong liên kết được cung cấp. Trong đoạn mã, nó là chính xác.
django.utils.translation.get_language()
và django.utils.translation.get_language_from_request(request, check_path)
. Nếu theo quan điểm, bạn nên sử dụng sau này với check_path = True
để có được những mẫu ngôn ngữ của bạn sẽ nhận được kết xuất trong.
Chỉ cần nói thêm rằng nếu bạn sử dụng django.utils.translation.get_language()
thì bạn nên nhớ rằng nếu phần mã đó được gọi là không đồng bộ (ví dụ như tác vụ cần tây) thì cách tiếp cận này sẽ không hoạt động do nó chạy trong một chuỗi khác.
bạn có thể sử dụng cái này
from django.utils import translation
translation.get_language()
Bạn có thể đọc locale
thông tin ngôn ngữ của hệ thống .