2017-09-29 8 views
0

일을 시작하기 위해 여러 시간이 걸렸지 만 여전히 성공하지 못했습니다. Django (https://docs.djangoproject.com/en/1.11/topics/templates/#django.template.backends.jinja2.Jinja2)와 함께 Jinja2를 사용하고 이제 번역을 사용하려고합니다. Jinja2 문서 (http://jinja.pocoo.org/docs/2.9/extensions/#i18n-extension) 기존 확장 (jinja2.ext.i18n)을 제안합니다. 그래서 내 구성은 다음과 같습니다Django + Jinja2 + i18n : jinja2.exceptions.UndefinedError : 'gettext'가 정의되지 않았습니다.

settings.py

TEMPLATES = [ 
{ 
    "BACKEND": "django.template.backends.jinja2.Jinja2", 
    "DIRS": [os.path.join(BASE_DIR, 'templates')], 
    "APP_DIRS": False, 
    'OPTIONS' : { 
     'environment': 'config.jinja2.environment' 
    } 
}] 

jinja2.py :

{{ gettext('...') }} 

결과 :

jinja2.exceptions.UndefinedError: 'gettext' is undefined 
,691,363 템플릿 내에서

def environment(**options): 
    env = Environment(**options, extensions=['jinja2.ext.i18n']) 
    env.globals.update({ 
     'static': staticfiles_storage.url, 
     'url': reverse, 
     'dj': defaultfilters 
    }) 
    return env 

210

누군가가 문제가 무엇인지, 내가 놓친 부분을 알고 있습니까? 도움에 미리 감사드립니다!

답변

1

다음은 많은 시도를 한 후 내 해결책입니다. 'jinja2.ext.i18n는'자동 gettext를 설치하지 않습니다, 그래서 당신은 install_gettext_callables를 통해 환경에 먼저 추가해야합니다

from django.utils.translation import gettext, ngettext 

def environment(**options): 
    env = Environment(**options, extensions=['jinja2.ext.i18n']) 

    env.install_gettext_callables(gettext=gettext, ngettext=ngettext, newstyle=True) 

    env.globals.update({ 
     'static': staticfiles_storage.url, 
     'url': reverse, 
     'dj': defaultfilters 
    }) 
    return env