コンテンツへスキップ
Django i18n

Django i18n:Python ウェブアプリ向けの組み込み翻訳機能

Django には、GNU gettext を基盤とする完全な国際化フレームワークが付属しています。gettext 関数とテンプレートタグを使用して、ビュー、モデル、テンプレート内の文字列を翻訳対象としてマークできます。Django は .po ファイルを高速ルックアップ用の .mo バイナリにコンパイルし、ミドルウェアがURLプレフィックス、Cookie、またはブラウザのヘッダーに基づいて適切なロケールを自動的にアクティブにします。

Django i18n の機能

_() および gettext_lazy() 翻訳関数を使ったGNU gettext統合
makemessages および compilemessages コマンドを使用した .po/.mo ファイルのワークフロー
テンプレート内での翻訳用のテンプレートタグ {% trans %} および {% blocktrans %}
ngettext および {% blocktrans count %} による複数形対応
モデルフィールドおよびフォームラベルに対する gettext_lazy() を使用した遅延翻訳
URL、Cookie、およびヘッダーから言語を自動検出するためのLocaleMiddleware
ロケール接頭辞付きURLルーティング用のi18n_patterns(例:/en/about、/fr/about)
日付、数値、通貨のフォームおよびモデルフィールドのローカライズ
USE_TZ および pytz との連携によるタイムゾーン対応の日時処理

実践的なDjangoのi18n

複数形には Views の gettext 関数と ngettext を使用し、settings.py の LANGUAGES を設定して、対応するロケールを定義してください。

# views.py
from django.utils.translation import gettext as _
from django.utils.translation import ngettext

def welcome(request):
    output = _("Welcome to our site")
    count = 5
    output += ngettext(
        "%(count)d item",
        "%(count)d items",
        count
    ) % {"count": count}
    return HttpResponse(output)

# settings.py
LANGUAGE_CODE = 'en'
USE_I18N = True
LANGUAGES = [
    ('en', 'English'),
    ('fr', 'French'),
    ('de', 'German'),
]

今すぐDjangoのローカライズを始めましょう

AIを活用したワークフロー、CLIによる同期、50ミリ秒未満のCDN配信機能を活用して、Djangoの.poファイルの翻訳を管理しましょう。