我在templates/home.html
中有以下标签:
{% trans "test" %}
无论选择哪种语言,始终打印“测试”。我知道语言会发生变化,因为我这样打印(并且管理员的语言也发生了变化,等等):
{% get_current_language as LANGUAGE_CODE %}
{{ LANGUAGE_CODE }}
在项目的settings.py中,我有:
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# modeltranslation settings
LANGUAGES = (
('en', _('English')),
('zh-hans', _('Simplified Chinese')),
('zh-hant', _('Traditional Chinese')),
)
LOCALE_PATHS = [
os.path.join(BASE_DIR, 'locale')
]
我想尝试翻译成简体中文,所以我用python3 manage.py makemessages -l zh-hans
创建了翻译对象,并在locale/zh-hans/LC_MESSAGES/django.po
中填充了test
的值,如下所示:
#: templates/home.html:8
msgid "test"
msgstr "你好"
然后我运行python3 manage.py compilemessages
。
在templates/_base.html
继承的templates/home.html
中,我有
{% load static %}
{% load static i18n %}
{% load i18n %}
在templates/home.html
中,我有
{% extends '_base.html' %}
{% load i18n %}
尽管如此,当我将语言更改为zh-hans
时,它始终显示test
。怎么了?
我正在使用Django 3.0.1。
编辑:在settings.py
中,我已从gettext
切换为gettext_lazy
,如评论所建议的那样_
。