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

Tam*_*mpa 8 python babel flask

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

这是我的步骤.

  1. 我在一个页面中有这个 {{_("Hello")}}

  2. 我运行这个命令.

    pybabel extract -F babel.cfg -o messages.pot .
    
    Run Code Online (Sandbox Code Playgroud)
  3. 然后我为德语运行此命令.

    pybabel init -i messages.pot -d translations -l de
    
    Run Code Online (Sandbox Code Playgroud)
  4. 这是德语的mo文件 /app/translations/de/LC_MESSAGES/messages.po

    # 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"
    
    Run Code Online (Sandbox Code Playgroud)
  5. 我运行这个命令.

    pybabel compile -d translations
    
    Run Code Online (Sandbox Code Playgroud)

    这就是我得到的.

    catalog 'translations/de/LC_MESSAGES/messages.po' is marked as fuzzy, skipping
    
    Run Code Online (Sandbox Code Playgroud)
  6. 设置这是烧瓶

    app.config['BABEL_DEFAULT_LOCALE'] = 'de'
    
    Run Code Online (Sandbox Code Playgroud)

我能得到什么?我得到Hello.为什么Flask Babel不起作用?我该如何处理模糊?这应该是基本的.

Mar*_*ers 8

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

pybabel compile -f -d translations
Run Code Online (Sandbox Code Playgroud)

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

  • 我不认为答案很合适.显然强制编译是错误的解决方案 - 相反,解释为什么有一个"怪异"(空)模糊消息会更有用.例如,我不知道我是否应该将其标记为非模糊或仅将其全部删除. (2认同)

Fel*_*arz 5

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