根据PEP 257命令行脚本的docstring应该是它的用法消息:
脚本(独立程序)的docstring应该可用作其“用法”消息,当使用不正确或缺少的参数调用脚本时打印(或者可能使用“-h”选项,用于“帮助”) . 这样的docstring应该记录脚本的功能和命令行语法,环境变量和文件 . 用法消息可以相当复杂(几个屏幕已满),并且应该足以让新用户正确使用该命令,以及对复杂用户的所有选项和参数的完整快速参考 .
并且docstring应该是作为模块级别的第一个字符串,在其他任何东西之前,作为 __doc__
可用 .
现在,我也使用docopt作为用法消息解析器,所以我只需编写doc字符串,它就是's building the command line parser on its own, and that' .
_("""...""")
's not that great, is that I can'找到一种方法将文档字符串标记为get18的i18nable,因此我可以在给予 docopt
时将其转换为其他语言 . 当时我得到的唯一解决方案是在翻译所有应用程序的其他字符串时,使用和帮助消息保持英文!
正如PEP 20所述:
应该有一个 - 最好只有一个 - 显而易见的方法 . 虽然这种方式起初可能并不明显,除非你是荷兰人 .
什么是解决无法将文档字符串标记为可翻译优雅的限制的最佳方法?
N.B . :这里我们认为我正在 __init__.py
模块中执行 gettext.install()
,以便在解析 __doc__
之前,内部存在 _()
.
3 回答
其他方式:
这不是使用异常,而是使用方法的字符串表示形式进行键入测试,并在内置模块中查找该方法...这并不比其他选项更好 .
那个也是一个非常糟糕和不优雅的黑客,因为翻译人员必须参考源代码来查找文档字符串 . 或者我必须在代码中有两次docstring的内容 .
目前,这是一个我正在考虑的解决方案:
我没有找到那么优雅,因为即使python中的例外是可以的,我认为它们应该被保留用于特殊情况而不是应用程序的用例 .
它也是一个非常顽皮的黑客,它将在gettext中获取docstring格式而不是
__docopt__
文本,这将无法帮助翻译,因为他们将不得不回到源代码...我终于找到解析文档字符串的唯一好方法:
将提取所有文档字符串 . 因此,唯一需要翻译的内容可以使用以下方式进行翻译: