我正在尝试在Django中对简体中文进行导航栏翻译,但是,只翻译了第一个单词。也就是说,我创建了一个navbar.html
,内容如下:
{% load i18n %}
<li><a href="{% url 'homepage' %}">{% trans 'Home' %}</a></li>
<li><a href="{% url 'security' %}">{% trans 'Security' %}</a></li>
然后我做了./manage.py makemessages -l zh_CN
并构建了一个包含
django.po
#: templates/navbar.html:20
msgid "Home"
msgstr "首页"
#: templates/navbar.html:25
msgid "Security"
msgstr "安全性"
然后我做了一个./manage.py compilemessages
来获取django.mo
,它似乎拥有我需要的所有翻译。
与this question相反,我的LOCALE_PATHS
确实是一个元组:
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale'),
)
我的LocaleMiddleware
在SessionMiddleware
之后和CommonMiddleware
之前,正如文档所指定的那样:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
...
]
尽管如此,只翻译了Home
;所有其他模板变量都未翻译。
为了增加一点神秘感,我将导航栏翻译成西班牙语,所有变量都在浏览器中正确翻译。这让我怀疑我的浏览器没有使用正确的语言代码,因此我运行了./manage.py makemessages -l zh-hans
并复制了zh_CN
目录中的翻译,但没有骰子。
关注this后,我删除了#, fuzzy
的所有实例,但无济于事。
我在Django 1.10.3和Python 3.5上。