gpt4 book ai didi

python - 如何让 docstring 遵守 PEP257,同时可与 docopt 一起使用以使用 gettext 遵守 i18n?

转载 作者:太空宇宙 更新时间:2023-11-03 11:29:48 30 4
gpt4 key购买 nike

根据 PEP 257命令行脚本的文档字符串应该是它的用法信息:

The docstring of a script (a stand-alone program) should be usable as its "usage" message, printed when the script is invoked with incorrect or missing arguments (or perhaps with a "-h" option, for "help"). Such a docstring should document the script's function and command line syntax, environment variables, and files. Usage messages can be fairly elaborate (several screens full) and should be sufficient for a new user to use the command properly, as well as a complete quick reference to all options and arguments for the sophisticated user.

docstring 应该是作为模块级别的第一个字符串,首先是作为 __doc__ 可用。

现在,我也在使用 docopt作为用法消息解析器,所以我只需编写文档字符串,它自己构建命令行解析器,这很棒。

_("""...""")

不太好的是,我无法找到一种方法来将文档字符串标记为 i18nable 以用于 gettext,因此当提供给 docopt 时,我可以将其转换为其他语言。目前我得到的唯一解决方案是在翻译应用程序的所有其他字符串时,使用法和帮助消息保持英文!

作为PEP 20状态:

There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.

绕过无法将文档字符串优雅地标记为可翻译的限制的最佳方法是什么?

N.B.:这里我们认为我正在 __init__.py 模块中执行 gettext.install() 以便 _() 甚至在 __doc__ 被解析之前就存在于内置函数中。

最佳答案

目前,这是我正在考虑的解决方案:

"""\
This is the docstring
"""

import docopt
if __name__ == "__main__":
try:
args = docopt.docopt(_("{docstring}").format(docstring=__doc__))
except KeyError:
args = docopt.docopt(_("{docstring}")) # string which will be replaced by the i18ned one.

我不觉得那很优雅,因为即使在 python 中异常是可以的,我认为它们应该被保留用于某些异常而不是应用程序用例中的某些东西。

这也是一个非常顽皮的 hack,它将在 gettext 中获取文档字符串格式而不是 __docopt__ 文本,这对翻译人员没有帮助,因为他们将不得不返回源代码......

关于python - 如何让 docstring 遵守 PEP257,同时可与 docopt 一起使用以使用 gettext 遵守 i18n?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23697424/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com