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_CODEoverride()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 localedil bilgisi için okuyabilirsiniz .