分类 django 下的文章

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

django 1.9.6升级后本地化的问题

IOError: No translation files found for default language zh-CN.

出现上面的代码,是因为django升级后,修改了本地化中文的名字。

可以查看以下位置下,存在一个叫 zh_Hans 名字的目录

python3.5/site-packages/django/conf/locale/

看到这里就明白了,原来只是修改了名字,接下来在配置文件里,修改文件settings.py即可

LANGUAGE_CODE = 'zh-Hans'