Rumah >pembangunan bahagian belakang >Tutorial Python >Sokongan berbilang bahasa dalam rangka kerja Django
Rangka kerja Django ialah rangka kerja web Python yang sangat popular Ia menyediakan sokongan berbilang bahasa yang berkuasa, membolehkan pembangun membangunkan tapak web berbilang bahasa dengan mudah. Dalam artikel ini, kami akan meneroka cara sokongan berbilang bahasa dilaksanakan dalam rangka kerja Django dan beberapa amalan terbaik.
Pertama sekali, mari kita fahami cara kefungsian berbilang bahasa dalam rangka kerja Django dilaksanakan. Django melaksanakan sokongan berbilang bahasa dengan menggunakan alat gettext. Alat ini membantu kami mengekstrak rentetan teks daripada kod sumber dan menterjemahkannya ke dalam bahasa yang berbeza. Dalam Django, kita boleh menggunakan gettext sebagai kaedah terjemahan Django, atau kita boleh menggunakan kaedah terjemahan terbina dalam Django. Tidak kira kaedah yang anda gunakan, ia memerlukan langkah berikut:
Mari bincangkan langkah ini satu persatu.
Dalam Django, kami menggunakan arahan gettext untuk mengekstrak rentetan teks yang perlu diterjemahkan. Fail Gettext dalam Django biasanya dinamakan django.po. Kedua-dua alat gettext standard dan sokongan alat gettext Django menggunakan gettext dalam kod untuk menandakan rentetan teks yang perlu diterjemahkan. Contohnya:
from django.utils.translation import gettext as _ class MyView(View): def get(self, request): context = { 'title': _('Hello World!'), } return render(request, 'mytemplate.html', context)
Dalam kod di atas, kami menggunakan kaedah gettext Django untuk menandakan rentetan "Hello World!" Seterusnya kita perlu menjalankan gettext untuk mengekstrak rentetan yang perlu diterjemahkan.
Rentetan teks yang diekstrak oleh gettext akan diletakkan ke dalam fail django.po. Kita boleh menggunakan editor teks atau editor po khusus untuk mengedit fail ini dan menterjemah rentetan ke dalam bahasa sasaran. Contohnya, kita boleh menterjemah "Hello World!" kepada "Hello, world!".
Dalam Django, kita boleh mendapatkan tetapan bahasa pengguna melalui perisian tengah dan meletakkan Ia ditetapkan kepada semasa sesi. Komuniti Django menyediakan banyak perpustakaan pihak ketiga yang sangat baik untuk mencapai fungsi ini, seperti django-language-utils dan django-language-switcher. Berikut ialah contoh middleware yang mudah:
class LanguageMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): language = request.COOKIES.get('language') # get language from cookies if language: translation.activate(language) # set user language for the current session response = self.get_response(request) return response
Dalam perisian tengah di atas, kami mendapat tetapan bahasa pengguna daripada kuki dan menetapkannya kepada sesi semasa. Setelah kami mempunyai tetapan bahasa pengguna, kami boleh menggunakan _('Hello World!') untuk mendapatkan rentetan terjemahan yang betul.
Selain menggunakan arahan gettext untuk mengekstrak rentetan teks yang perlu diterjemahkan, Django juga menyediakan fungsi terjemahan yang lebih maju. Salah satunya ialah pembolehubah templat boleh diterjemahkan. Contohnya:
{% trans "Hello {{ name }}!" %}
Dalam templat di atas, kami telah menggunakan kaedah terjemahan terbina dalam Django untuk menterjemah rentetan "Hello {{ name }}!". Django secara automatik mengenali pembolehubah templat dalam rentetan ini dan menyerahkannya kepada alat terjemahan supaya alat terjemahan boleh menterjemah rentetan dengan betul.
Perkara terakhir yang perlu diperhatikan ialah apabila kita membangunkan tapak web berbilang bahasa, kita harus menggunakan kod bahasa untuk mengenal pasti bahasa yang berbeza. Contohnya, bahasa Inggeris ialah en dan bahasa Cina ialah zh-cn. Menggunakan kod bahasa boleh memastikan laman web kami boleh menyokong pelbagai bahasa dan tidak akan menyebabkan masalah seperti aksara yang bercelaru.
Ringkasnya, sokongan berbilang bahasa yang berkuasa dalam rangka kerja Django membolehkan pembangun membangunkan tapak web berbilang bahasa dengan mudah. Kita boleh menggunakan arahan gettext untuk mengekstrak rentetan teks yang perlu diterjemahkan dan menggunakan editor PO untuk menterjemahkannya ke dalam bahasa sasaran. Kami kemudiannya boleh menggunakan middleware untuk mendapatkan tetapan bahasa pengguna dan menggunakan kaedah terjemahan terbina dalam Django untuk mendapatkan rentetan terjemahan yang betul. Akhirnya, kita harus menggunakan kod bahasa untuk mengenal pasti bahasa yang berbeza.
Atas ialah kandungan terperinci Sokongan berbilang bahasa dalam rangka kerja Django. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!