Flask Babel - 'translations / de / LC_MESSAGES / messages.po'标记为模糊,跳过

时间:2012-09-23 19:47:15

标签: python flask babel

我无法在Flask Babel中获得基本的翻译工作。

以下是我的步骤。

  1. 我在页面{{_("Hello")}}

  2. 中有这个
  3. 我运行此命令。

    pybabel extract -F babel.cfg -o messages.pot .
    
  4. 然后我为德语运行此命令。

    pybabel init -i messages.pot -d translations -l de
    
  5. 以下是/app/translations/de/LC_MESSAGES/messages.po

    中的德语mo文件
    # German translations for PROJECT.
    # Copyright (C) 2012 ORGANIZATION
    # This file is distributed under the same license as the PROJECT project.
    # FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
    #
    #, fuzzy
    msgid ""
    msgstr ""
    "Project-Id-Version: PROJECT VERSION\n"
    "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
    "POT-Creation-Date: 2012-09-24 03:36+0800\n"
    "PO-Revision-Date: 2012-09-24 03:37+0800\n"
    "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
    "Language-Team: de <LL@li.org>\n"
    "Plural-Forms: nplurals=2; plural=(n != 1)\n"
    "MIME-Version: 1.0\n"
    "Content-Type: text/plain; charset=utf-8\n"
    "Content-Transfer-Encoding: 8bit\n"
    "Generated-By: Babel 0.9.6\n"
    
    #: templates/baseh5.html:129
    msgid "Hello"
    msgstr "Guten Tag"
    
  6. 我运行此命令。

    pybabel compile -d translations
    

    这就是我得到的。

    catalog 'translations/de/LC_MESSAGES/messages.po' is marked as fuzzy, skipping
    
  7. 设置这是烧瓶

    app.config['BABEL_DEFAULT_LOCALE'] = 'de'
    
  8. 我能得到什么?我得到Hello。为什么Flask Babel不起作用?我该如何处理模糊?这应该是基本的。

2 个答案:

答案 0 :(得分:8)

您可以强制pybabel compile使用-f(或--use-fuzzy)命令行开关编译标记为模糊的消息:

pybabel compile -f -d translations

'模糊'消息在#, fuzzy行上方标有msgid行,并且是合并的结果,其中消息被认为与先前版本稍有不同。标记为fuzzy的消息应该由人查看以确保翻译不需要更新,之后人工翻译将删除该标记。

答案 1 :(得分:3)

正如pybabel所说:目录本身被标记为“模糊”(第6行)。如果删除该行,则不需要“强制”选项。