Я могу использовать шаблоны jinj2 с django через render_to_response, определенный ниже
from django.conf import settings from django.core.exceptions import ImproperlyConfigured from django.http import HttpResponse from django.template import TemplateDoesNotExist, Context from django.utils import translation from itertools import chain from jinja2 import FileSystemLoader, Environment from jinja2 import nodes from jinja2.ext import Extension from django.conf import settings import jinja_filters as jf import traceback from django.utils.translation import gettext, ngettext class DjangoTranslator(object): def __init__(self): self.gettext = gettext self.ngettext = ngettext class DjangoEnvironment(Environment): def get_translator(self, context): return DjangoTranslator() template_dirs = getattr(settings,'TEMPLATE_DIRS') default_mimetype = getattr(settings, 'DEFAULT_CONTENT_TYPE') global_exts = getattr(settings, 'JINJA_EXTENSIONS', ()) env = DjangoEnvironment(autoescape=False, loader=FileSystemLoader(template_dirs, encoding="utf-8"), extensions=global_exts) env.filters.update({'myescape':jf.myescape}) if 'jinja2.ext.i18n' in global_exts: env.install_gettext_translations(translation) def render_to_response(filename, context={}, context_instance=Context({}), mimetype=default_mimetype): template = env.get_template(filename) for d in context_instance.dicts: context.update(d) context.update({'settings':settings}) rendered = template.render(**context) return HttpResponse(rendered, mimetype=mimetype)
но не может заставить django извлекать строки перевода для шаблонов jinja2.
кажется, что строки ниже в django / utils / translation / trans_real.py позволяют команде makemessages анализировать шаблоны django для i18n через templatize@trans_real.py
inline_re = re.compile(r"""^\s*trans\s+((?:".*?")|(?:'.*?'))\s*""") block_re = re.compile(r"""^\s*blocktrans(?:\s+|$)""") endblock_re = re.compile(r"""^\s*endblocktrans$""") plural_re = re.compile(r"""^\s*plural$""") constant_re = re.compile(r"""_\(((?:".*?")|(?:'.*?'))\)""")
Есть ли лучший способ, чем изменение makemessages.py путем переписывания регулярных выражений тегов перевода для локального использования в шаблонах jinja2 для извлечения строк перевода?