python - Pybabel用jinja2生成空pot文件

标签 python flask jinja2 python-babel

我正在使用 Flask、Flask-Babel 和 Jinja2。我正在尝试生成 .pot 文件。这就是我到目前为止所做的。

我的 babel.cfg 如下所示:

[python: **.py]

[jinja2: **.html]
encoding = utf-8
extensions=jinja2.ext.autoescape,jinja2.ext.with_

我使用我的应用程序初始化 Flask-Babel,如下所示:

# Babel init
babel = Babel(app)
app.config['BABEL_DEFAULT_LOCALE'] = 'en'

在我的模板目录中我有 homepage.html:

...
<div class="news-wrapper">
    <p class="quote">{{ gettext('Hey there') }}</p>
    <p class="quote">{% trans %}Trying 42{% endtrans %}</p>
    <p class="quote">{{ _('Maybe like this?') }}</p>
</div>
...

然后运行这个命令(当我在我的 virtualenv 中时):

pybabel extract -F babel.cfg -o messages.pot .

输出行之一是:

extracting messages from templates/homepage.html (extensions="jinja2.ext.autoescape,jinja2.ext.with_", encoding="utf-8")

它会生成一个包含以下内容的 messages.pot 文件:

# Translations template for PROJECT.
# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2015-04-21 10:06+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 1.3\n"

该文件没有我的翻译。

我没有收到任何错误或警告,pybabel 只是无法在 jinja2 文件中找到 gettext 变体。 但是 当我在 .py 文件中使用 gettext 时, 工作正常。

我错过了什么吗?

最佳答案

我遇到了同样的问题,在我的例子中,问题是指定输入文件,即在其中查找标记为翻译的字符串的文件。

当我按照各种教程(例如 this one)的建议运行 pybabel extract -F babel.cfg -o messages.pot 时,我得到了 pybabel: error: no input files 或指定的目录 错误。

最终对我有用的命令是:

pybabel extract -F babel.cfg -o messages.pot --input-dirs=.

关于python - Pybabel用jinja2生成空pot文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29765456/

相关文章:

Python - 包不是相对于当前目录的吗?

python - MS SQL 数据库到 SAS

javascript - Django/Jinja - 将变量从文本区域传递到按钮

python - sklearn kmeans 上的预测方法,它是如何工作的以及它在做什么?

javascript - 动态填充多个(不止一个)下拉选项/选项(Flask、python、Ajax)

python - 如何为 mongoengine 文档实现 Flask-RBAC?

python - Flask run 不起作用,但 python server.py 起作用!环境变量设置

python - Flask + Jinja 和 POST/GET 变量

flask - 如何使用 Flask/Python/Jinja 尽早刷新 <head>

python - 重用现有的上下文管理器作为 pytest 固定装置