Bir modelde veya yöneticide mevcut iş parçacığındaki mevcut dili nasıl alabilirim?
Yanıtlar:
Özel ilgi duyulan işlevler django.utils.translation.get_language()
, geçerli iş parçacığında kullanılan dili döndüren işlevlerdir . Belgelere bakın .
Veya bunu görünümlerinizde de görebilirsiniz
request.LANGUAGE_CODE
django.utils.translation.get_language()
django.utils.translation.get_language()
zaman daha iyi bir çözüm olduğunu düşünüyorum .
Dili öğrenmek için kullandığınız yönteme dikkat edin . Hangi yönteme bağlı olarak, Django, kullanılacak doğru dili belirlemek için farklı yollar ve bilgiler kullanır.
Fonksiyonu kullanırken, iş parçacığı diliyle django.utils.translation.get_language()
bağlantılıdır . Django 1.8'den önce, çeviriler devre dışı bırakıldığında her zaman geri döndü . İş parçacığı dilini manuel olarak geçersiz kılmak istiyorsanız, çok açık bir şekilde adlandırılmayan, ancak yine de yararlı olan veya işlevlerini kullanabilirsiniz :settings.LANGUAGE_CODE
override()
activate()
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
Eğer django'nun çok daha yaygın olan yolu ve / veya isteği (dil çerezi, ...) kontrol etmesini istiyorsanız , örneğin www.example.com/en/<somepath>
vs www.example.com/fr/<somepath>
, kullanın django.utils.translation.get_language_from_request(request, check_path=False)
. Ayrıca, her zaman geçerli bir dil setini döndürecektir.settings.LANGUAGES
Bu konu hakkında Google aracılığıyla bu farklılıkları bulmanın çok kolay olmadığını buldum, bu yüzden burada daha fazla referans için burada.
django.utils.translation
çeviriler olmadığını unutmayın . Sağlanan bağlantıda yazım hatası var. Parçacıkta doğru.
django.utils.translation.get_language()
ve arasındaki fark için django.utils.translation.get_language_from_request(request, check_path)
. Görünümdeyseniz, check_path = True
şablonunuzun oluşturulacağı dili elde etmek için ikincisini kullanmalısınız .
Sadece şunu da eklemek için, eğer kullanırsanız django.utils.translation.get_language()
, kodun bu bölümü eşzamansız olarak çağrılacaksa (örneğin, bir kereviz görevi olarak), bu yaklaşımın farklı bir iş parçacığında çalışması nedeniyle işe yaramayacağını aklınızda bulundurmalısınız.
bunu kullanabilirsin
from django.utils import translation
translation.get_language()
Sistemin locale
dil bilgisi için okuyabilirsiniz .