了解trans模板标签和makemessages

时间:2013-11-13 12:56:01

标签: python django internationalization django-i18n

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

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

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

    运行django-admin.py时,
  1. django.po文件不会更新makemessages -a
  2. 当语言被更改时语言文件存在时,除了使用django软件包预先构建的内容之外,网站上没有任何更改。†
  3. i18n / setlang视图不起作用。††
  4. 现在,我只有一点未解决。首先是什么使得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',
    ) 
    

1 个答案:

答案 0 :(得分:0)

所以我似乎能够回答我自己的问题。

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

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

  3. 将LocaleMiddleware添加到MIDDLEWARE_CLASSES

  4. 问题解决了。