2

我想开始在我的 Python 项目中使用Babel 。setup.py根据文档,我有以下内容:

setup(
    ...
    message_extractors = {'my_project': [('**.py', 'lingua_python', None),
    ]},
    ...

一切正常。现在我想知道第三个参数(设置为None)是什么意思以及我可以传入什么(只是为了了解它)。我查看了Babel 文档,但找不到任何东西,但我在 Babel 的Mako 文档中看到了这一点:

# Extraction from Python source files

[python: myproj/**.py]

# Extraction from Mako templates

[mako: myproj/templates/**.html]
input_encoding = utf-8

我想知道:这个input_encoding选项看起来像是你可以通过那里的东西。由于我在所有 Python、我的模板等中使用 Unicode 和 UTF-8。我认为这可能是一个需要指定的有效选项(也许这是一个隐含的假设,我不知道)。

所以现在我正在寻找记录这种行为的东西,但即使是我发现的 Babel 文档的一部分也没有说明第三个参数是什么。

请通过分享一些详细解释这一点的有用链接来启发我。先感谢您。

更新:我发现最后一个参数似乎是一个dict选项,可能传递给扩展(例如mako)。当我将最后一个参数设置为None抱怨消失时。因此,虽然这似乎是答案,但我仍在寻找有关此的文档。{'input_encoding': 'utf-8'}mako.exceptions.CompileExceptionUnicode decode operation of encoding 'ascii' failed

4

1 回答 1

3

第三个参数是选项映射。

这可以包含将传递给提取器方法的任意关键字参数。这完全取决于提取器方法将接受哪些关键字参数。

options提取器在调用时将这些选项作为最后一个参数传递,通常在方法签名中调用。Mako Babel 插件支持,例如。前者似乎是后者参数的遗留拼写,仅在未指定时使用。encodinginput_encodinginput_encoding

因此,每个 Babel 插件都需要单独记录支持的选项,Babel 项目没有设置限制,也不会知道每个插件支持的细节。

Mako 提取器的详细信息记录在Common Framework Integrations 部分

Mako 提取器支持input_encoding指定模板编码的可选参数(与Template/TemplateLookupinput_encoding参数相同)。

于 2013-03-06T21:11:55.680 回答