在django3.0+jinja2下加入i18n的多语言支持
在django 3.0.5 + jinja 2.11.2 加入 i18n 多语言支持
需要建立文件 yourproject/jinja2.py
注意:其中 extensions=['jinja2.ext.i18n'] 是重点,要留心大小写
from django.templatetags.static import static
from django.urls import reverse
from django.utils.translation import gettext, ngettext
from jinja2 import Environment
def environment(**options):
env = Environment(extensions=['jinja2.ext.i18n'], **options)
env.install_gettext_callables(gettext=gettext, ngettext=ngettext, newstyle=True)
env.globals.update({
'static': static,
'url': reverse
})
return env
然后注意在 setting.py 中的模版配置,
jinja2templates是jinja2模版的位置
TEMPLATES = [
{
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'DIRS': ['jinja2templates'],
'APP_DIRS': True,
'OPTIONS': {
'environment': 'yourproject.jinja2.environment'
},
},
]