Bagaimana saya bisa mendapatkan bahasa saat ini di utas saat ini di model atau di admin?
Jawaban:
Fungsi minat tertentu adalah django.utils.translation.get_language()
yang mengembalikan bahasa yang digunakan di utas saat ini. Lihat dokumentasi .
Atau Anda juga bisa mendapatkan ini dalam pandangan Anda
request.LANGUAGE_CODE
django.utils.translation.get_language()
django.utils.translation.get_language()
selalu ada solusi yang lebih baik.
Berhati-hatilah dengan metode yang Anda gunakan untuk memahami bahasa tersebut . Bergantung pada metode mana, Django akan menggunakan cara dan informasi berbeda untuk menentukan bahasa yang tepat untuk digunakan.
Saat menggunakan django.utils.translation.get_language()
fungsinya, itu ditautkan ke bahasa utas . Sebelum Django 1.8, itu selalu dikembalikan settings.LANGUAGE_CODE
ketika terjemahan dimatikan. Jika Anda ingin mengganti bahasa utas secara manual, Anda dapat menggunakan fungsi override()
atau activate()
, yang namanya tidak terlalu eksplisit, tetapi masih berguna:
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
Jika Anda ingin django memeriksa jalur dan / atau permintaan (cookie bahasa, ...) , yang jauh lebih umum misalnya www.example.com/en/<somepath>
vs www.example.com/fr/<somepath>
, gunakan django.utils.translation.get_language_from_request(request, check_path=False)
. Selain itu, ini akan selalu mengembalikan set bahasa yang validsettings.LANGUAGES
Saya merasa tidak mudah untuk menemukan perbedaan ini melalui Google tentang subjek ini jadi ini dia untuk referensi lebih lanjut.
django.utils.translation
, bukan terjemahan. Ada kesalahan ejaan pada tautan yang disediakan. Dalam potongan itu benar.
django.utils.translation.get_language()
dan django.utils.translation.get_language_from_request(request, check_path)
. Jika terlihat, Anda harus menggunakan yang terakhir dengan check_path = True
untuk mendapatkan bahasa yang akan digunakan template Anda.
Hanya untuk menambahkan bahwa jika Anda benar-benar menggunakan django.utils.translation.get_language()
maka Anda harus ingat bahwa jika bagian kode itu akan dipanggil secara asinkron (misalnya sebagai tugas seledri) maka pendekatan ini tidak akan berfungsi karena berjalan di utas yang berbeda.
kamu bisa menggunakan ini
from django.utils import translation
translation.get_language()
Anda dapat membaca sistem locale
untuk informasi bahasa.