Django trans 模板标签只显示占位符常量字符串



我在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/home.html继承的templates/_base.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,正如评论所建议的那样_

必须zh_Hans而不是zh-hans。这就是我不看源代码所得到的!https://github.com/django/django/tree/master/django/contrib/auth/locale

最新更新