在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'
            },
        },
]

标签: jinja2

添加新评论