나는django 1.x와 통합 된 jinja2 템플릿 용 번역 문자열 가져 오기?
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)
다음과 같이 정의에는 render_to_response를 통해 장고 템플릿을 jinj2 사용할 수 있지만 jinja2 템플릿에 대한 장고 추출물 번역 문자열을 만들 수 없습니다.
는 아래 선이 장고가 유틸은/번역/trans_real.py 이 가능 makemessages 있도록 더 좋은 방법이 [email protected]_real.pyinline_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 템플릿에서 로컬 사용을 위해 regexes를 사용 하시겠습니까?
은 또한 장고 완화 패키지했습니다 - 번역 문자열에 대한 지원, 신사 통합. https://github.com/altunyurt/djtemps – hinoglu