以下のように定義されたrender_to_responseを介して、djangoでjinj2テンプレートを使用できます
django.confのインポート設定から from django.core.exceptions import ImproperlyConfigured django.http から HttpResponse をインポート from django.template import TemplateDoesNotExist, Context django.utilsインポート翻訳から itertools インポート チェーンから jinja2インポートFileSystemLoader、環境から jinja2インポートノードから from jinja2.ext import 拡張機能 django.confのインポート設定から jinja_filters を jf としてインポート トレースバックのインポート django.utils.translation から gettext、ngettext をインポート クラス DjangoTranslator(オブジェクト): def __init__(自己): self.gettext = gettext self.ngettext = ngettext クラス DjangoEnvironment(環境): def get_translator (自己、コンテキスト): DjangoTranslator() を返す template_dirs = getattr(設定、'TEMPLATE_DIRS') default_mimetype = getattr(設定、「DEFAULT_CONTENT_TYPE」) global_exts = getattr(設定, 'JINJA_EXTENSIONS', ()) env = DjangoEnvironment(autoescape=False, loader=FileSystemLoader(template_dirs, encoding="utf-8"), extensions=global_exts) env.filters.update({'myescape':jf.myescape}) global_exts の「jinja2.ext.i18n」の場合: env.install_gettext_translations(翻訳) def render_to_response(filename, context={}, context_instance=Context({}), mimetype=default_mimetype): テンプレート = env.get_template(ファイル名) context_instance.dicts の d の場合: context.update(d) context.update({'settings':settings}) レンダリング = template.render(**context) return HttpResponse(レンダリング済み、mimetype=mimetype)
ただし、django に jinja2 テンプレートの翻訳文字列を抽出させることはできません。
以下の django/utils/translation/trans_real.py の行により、makemessages コマンドが templatize@trans_real.py を介して i18n 用の django テンプレートを解析できるようになるようです。
inline_re = re.compile(r"""^\s*trans\s+((?:".*?")|(?:'.*?'))\s*""") block_re = re.compile(r"""^\s*blocktrans(?:\s+|$)""") endblock_re = re.compile(r"""^\s*endblocktrans$""") multiple_re = re.compile(r"""^\s*plural$""") constant_re = re.compile(r"""_\(((?:".*?")|(?:'.*?'))\)""")
翻訳文字列を抽出するために jinja2 テンプレートでローカルで使用するために翻訳タグの正規表現を書き換えて makemessages.py を変更するよりも良い方法はありますか?