je peux utiliser jinj2 modèles avec django via render_to_response définis comme ci-dessousObtenir des chaînes de traduction pour les modèles jinja2 intégrés à django 1.x?
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)
mais ne peut pas faire des chaînes de traduction d'extraits de django pour les modèles de jinja2.
semble que les lignes ci-dessous dans django/utils/traduction/trans_real.py permettent de makemessages commande pour analyser les modèles de django pour i18n via [email protected]_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"""_\(((?:".*?")|(?:'.*?'))\)""")
est-il un moyen plus agréable que modifier le makemessages.py en réécrivant regexes tags de traduction pour une utilisation locale sur les modèles jinja2 pour extraire les chaînes de traduction?
J'ai aussi fait un paquet pour faciliter django - l'intégration de Jinja, avec prise en charge des chaînes de traduction. https://github.com/altunyurt/djtemps – hinoglu