ホームページ >バックエンド開発 >Python チュートリアル >Django フレームワークでの多言語サポート

Django フレームワークでの多言語サポート

WBOY
WBOYオリジナル
2023-06-17 11:12:091786ブラウズ

Django フレームワークは非常に人気のある Python Web フレームワークであり、強力な多言語サポートを提供するため、開発者は多言語 Web サイトを簡単に開発できます。この記事では、Django フレームワークでの多言語サポートの実装方法といくつかのベスト プラクティスについて説明します。

まず、Django フレームワークの多言語機能がどのように実装されているかを理解しましょう。 Django は、gettext ツールを使用して多言語サポートを実装します。このツールは、ソース コードからテキスト文字列を抽出し、それらをさまざまな言語に翻訳するのに役立ちます。 Django では、Django 変換メソッドとして gettext を使用することも、Django の組み込み変換メソッドを使用することもできます。どの方法を使用する場合でも、次の手順が必要です。

  1. ソース コードからテキスト文字列を抽出します。
  2. 翻訳ツールを使用して、テキスト文字列をターゲット言語に翻訳します。
  3. ユーザーの言語設定に基づいて、翻訳されたテキスト文字列を選択します。

これらの手順を 1 つずつ説明していきます。

  1. ソース コード内のテキスト文字列を抽出する

Django では、gettext コマンドを使用して、翻訳する必要があるテキスト文字列を抽出します。 Django の Gettext ファイルは通常、django.po という名前になります。標準の gettext ツールと Django の gettext ツールはどちらも、コード内で gettext を使用して翻訳が必要なテキスト文字列をマークすることをサポートしています。例:

from django.utils.translation import gettext as _

class MyView(View):
    def get(self, request):
        context = {
            'title': _('Hello World!'),
        }
        return render(request, 'mytemplate.html', context)

上記のコードでは、Django の gettext メソッドを使用して、翻訳する必要がある文字列「Hello World!」をマークします。次に、gettext を実行して、翻訳する必要がある文字列を抽出する必要があります。

  1. 翻訳ツールを使用して、テキスト文字列をターゲット言語に翻訳します。

gettext によって抽出されたテキスト文字列は、django.po ファイルに配置されます。テキスト エディターまたは専用の po エディターを使用してこのファイルを編集し、文字列をターゲット言語に翻訳できます。たとえば、「He​​llo World!」を「Hello, world!」に翻訳できます。

  1. ユーザーの言語設定に従って、翻訳されたテキスト文字列を選択します

Django では、ミドルウェアを通じてユーザーの言語設定を取得し、現在のセッション。 Django コミュニティは、この機能を実現するための django- language-utils や django- language-switcher などの優れたサードパーティ ライブラリを多数提供しています。簡単なミドルウェアの例を次に示します。

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

上記のミドルウェアでは、Cookie からユーザーの言語設定を取得し、それを現在のセッションに設定します。ユーザーの言語設定を取得したら、_('Hello World!') を使用して正しい翻訳文字列を取得できます。

gettext コマンドを使用して翻訳が必要なテキスト文字列を抽出することに加えて、Django はより高度な翻訳機能も提供します。その 1 つは、テンプレート変数を翻訳できることです。例:

{% trans "Hello {{ name }}!" %}

上記のテンプレートでは、Django の組み込み翻訳メソッドを使用して文字列「Hello {{ name }}!」を翻訳しました。 Django は、この文字列内のテンプレート変数を自動的に認識し、翻訳ツールが文字列を正しく翻訳できるように、それらを翻訳ツールに渡します。

最後に注意すべきことは、多言語 Web サイトを開発するときは、言語コードを使用してさまざまな言語を識別する必要があるということです。たとえば、英語は en、中国語は zh-cn です。言語コードを使用することで、Webサイトがさまざまな言語に対応し、文字化けなどの問題が発生しなくなります。

つまり、Django フレームワークの強力な多言語サポートにより、開発者は多言語 Web サイトを簡単に開発できます。 gettext コマンドを使用して翻訳が必要なテキスト文字列を抽出し、PO エディターを使用してそれをターゲット言語に翻訳できます。次に、ミドルウェアを使用してユーザーの言語設定を取得し、Django の組み込み翻訳メソッドを使用して正しい翻訳文字列を取得します。最終的には、言語コードを使用してさまざまな言語を識別する必要があります。

以上がDjango フレームワークでの多言語サポートの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。