Rumah > pembangunan bahagian belakang > Tutorial Python > Sokongan berbilang bahasa dalam rangka kerja Django

Sokongan berbilang bahasa dalam rangka kerja Django

WBOY
Lepaskan: 2023-06-17 11:12:09
asal
1783 orang telah melayarinya

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:

  1. Ekstrak rentetan teks daripada kod sumber.
  2. Gunakan alat terjemahan untuk menterjemah rentetan teks ke dalam bahasa sasaran.
  3. Pilih rentetan teks yang diterjemahkan berdasarkan tetapan bahasa pengguna.

Mari bincangkan langkah ini satu persatu.

  1. Ekstrak rentetan teks dalam kod sumber

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)
Salin selepas log masuk

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.

  1. Gunakan alat terjemahan untuk menterjemah rentetan teks ke dalam bahasa sasaran

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!".

  1. Pilih rentetan teks yang diterjemahkan mengikut tetapan bahasa pengguna

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
Salin selepas log masuk

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 }}!" %}
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan