我一直在努力让 i18n 工作并拥有我的网站的多语言版本。
我有几个人好心地为我做翻译,但是由于我遇到了一些问题,在网上搜索似乎有些人很难从 django 的国际化和本地化模块开始。
到目前为止,我遇到的主要问题是:
- 运行 django-admin.py makemessages -a 时 django.po 文件不更新
- 当语言文件在那里时,当语言发生变化时,除了使用 django 包预先构建的内容之外,网站上没有任何变化。†</li>
- i18n/setlang 视图不起作用。††</li>
现在,只有第 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',
)