1

我一直在努力让 i18n 工作并拥有我的网站的多语言版本。

我有几个人好心地为我做翻译,但是由于我遇到了一些问题,在网上搜索似乎有些人很难从 django 的国际化和本地化模块开始。

到目前为止,我遇到的主要问题是:

  1. 运行 django-admin.py makemessages -a 时 django.po 文件不更新
  2. 当语言文件在那里时,当语言发生变化时,除了使用 django 包预先构建的内容之外,网站上没有任何变化。†</li>
  3. 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',
) 
4

1 回答 1

0

所以看来我能够回答我自己的问题。

  1. 我之前更新我的翻译的地方是在翻译/语言环境中的项目树之外,由于某种原因,我收到一条消息说它已被弃用并且无法以这种方式进行,由于某种原因现在已经改变并且它已经修复makemessages 没有正确更新的问题。

  2. 从翻译中删除#,模糊标签。

  3. 将 LocaleMiddleware 添加到 MIDDLEWARE_CLASSES

问题解决了。

于 2013-11-14T00:35:41.207 回答