Djangoテンプレートまたは少なくともそれをビューに渡す言語のgettin '言語コードのグローバル変数はありますか?{{ LANG }}
は、たとえば「en」を生成します。request.LANGUAGE_CODE
。
詳細な説明をいただければ幸いです=)
まだ存在しない場合は、 テンプレートコンテキストプロセッサ を記述する必要があります。その方法を次に示します。
これをどこかに置きます:
def lang_context_processor(request):
return {'LANG': request.LANGUAGE_CODE}
そして、 TEMPLATE_CONTEXT_PROCESSORS
設定に参照を追加します。このようなもの:
from Django.conf import global_settings
TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + (
'myproject.myapp.templatecontext.lang_context_processor',
)
(新しいコンテキストプロセッサがデフォルトに追加されたときに誤って物事を壊さないことを意味するため、グローバル設定に追加することをお勧めします。)
ただし、組み込みのテンプレートコンテキストプロセッサ Django.template.context_processors.i18n
として存在します。 LANGUAGE_CODE
としてアクセスできます。
純粋に興味のある方のために、この関数の定義を以下に示します。
def i18n(request):
from Django.utils import translation
return {
'LANGUAGES': settings.LANGUAGES,
'LANGUAGE_CODE': translation.get_language(),
'LANGUAGE_BIDI': translation.get_language_bidi(),
}
プレーンなRequestContext
ではなく、テンプレートのレンダリングにContext
を使用していることを確認してください。使用しないと機能しません。
これは古いトピックです。しかし、一部の人はそれが便利だと思うかもしれません。
{% load i18n %}
...
{% get_current_language as LANGUAGE_CODE %}
Django 参照と例 。