Bagaimana saya bisa mendapatkan bahasa saat ini di utas saat ini di model atau di admin?
python
django
internationalization
diegueus9
sumber
sumber
Jawaban:
Fungsi minat tertentu adalah
django.utils.translation.get_language()
yang mengembalikan bahasa yang digunakan di utas saat ini. Lihat dokumentasi .sumber
Atau Anda juga bisa mendapatkan ini dalam pandangan Anda
sumber
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 dikembalikansettings.LANGUAGE_CODE
ketika terjemahan dimatikan. Jika Anda ingin mengganti bahasa utas secara manual, Anda dapat menggunakan fungsioverride()
atauactivate()
, 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>
vswww.example.com/fr/<somepath>
, gunakandjango.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.
sumber
django.utils.translation
, bukan terjemahan. Ada kesalahan ejaan pada tautan yang disediakan. Dalam potongan itu benar.django.utils.translation.get_language()
dandjango.utils.translation.get_language_from_request(request, check_path)
. Jika terlihat, Anda harus menggunakan yang terakhir dengancheck_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.sumber
kamu bisa menggunakan ini
from django.utils import translation translation.get_language()
sumber
Anda dapat membaca sistem
locale
untuk informasi bahasa.sumber