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'),
]