【发布时间】:2013-11-13 12:56:00
【问题描述】:
我一直在努力让 i18n 正常工作并拥有我的网站的多语言版本。
我有几个人好心地为我做翻译,但由于我遇到了一些问题,在网上搜索似乎有些人很难开始使用 django 的国际化和本地化模块。
到目前为止,我遇到的主要问题是:
- django.po 文件在运行 django-admin.py makemessages -a 时不更新
- 当语言文件存在时,当语言发生变化时,除了使用 django 包预先构建的内容外,网站上没有任何变化。†
- i18n/setlang 视图不起作用。††
现在,只有第 1 点我没有解决。首先是什么导致makemessages不更新?我正在使用 -a 来更新我之前制作的所有文件(de、da、fi),而 fi 是唯一实际添加了翻译的语言文件(其余的目前只是空的翻译字符串)
†我现在已经解决了第 2 个问题。似乎当 makemessages 创建 .po 文件时,它使用了一个模糊标记。
#, fuzzy
根据我所做的一些研究,这会将文件视为需要更新,就像 trans 标记附带的 no-op 选项一样。
{% trans "translation string" noop %}
删除#,模糊线后,它已经解决了这个问题。
††我已经添加了数字 3,仅供参考,因为我自己解决了这个问题。 您需要确保 MIDDLEWARE_CLASSES 中存在 LocaleMiddleware
MIDDLEWARE_CLASSES = (
'django.middleware.locale.LocaleMiddleware',
)
【问题讨论】:
-
好的,我已经解决了上述两个问题。但我仍然无法解释为什么 django-admin.py makemessages -a 不再有效,此外,如果我删除语言环境文件夹并尝试重新创建消息文件,那么我只剩下一个空的 LC_MESSAGES 文件夹。
标签: python django internationalization django-i18n