【问题标题】:How to docstring in python for multiple languages如何在 python 中为多种语言编写文档字符串
【发布时间】:2015-01-28 14:42:19
【问题描述】:

我想为自己创建一个新模块,但我也希望一些同事能够使用它。我开始用英语编写我的文档字符串,但后来我意识到这会使模块对一些不太了解这种语言的人毫无用处。

我的第一个想法是在同一个文档字符串中同时输入英语和西班牙语。但这似乎不对,如果我想让一些俄罗斯朋友也使用它怎么办?如果我的朋友遍布世界各地,却没有任何共同语言可以阅读文档怎么办?

用多种语言编写和阅读文档字符串的最简单方法是什么?

【问题讨论】:

  • 无法将文档字符串翻译成多种语言,但您可以通过 sphinx 创建文档并翻译文档。
  • @AndrewSvetlov 你绝对应该把这个作为答案。
  • @AndrewSvetlov,是的,请详细说明并添加作为答案,似乎是一个很好的解决方案。
  • 评论已作为答案发布。

标签: python internationalization multilingual docstring


【解决方案1】:

为了改进马里奥的回答,您可以将文档字符串放在装饰器中,以便它们位于函数的开头。


def doc(docstring):
    def decorate(fn):
        fn.__doc__ = docstring
        return fn
    return decorate

class MyAwesomeClass:

    @doc(_(
    """My awesome documentation for an incredible method.
 
       It's really awesome, isn't it?
       """))
    def incredible_method(with_fantastic_args):
        ...

仍然不理想,但比在底部某处看不到/忘记文档字符串要好得多。

【讨论】:

  • 好主意,接受的答案“无法将文档字符串翻译成多种语言”具有误导性,您的示例想法正是我所需要的。
【解决方案2】:

没有办法将文档字符串翻译成多种语言,但您可以通过Sphinx 工具创建文档并翻译文档。

Sphinx 本身支持生成文档的基于 gettext 的翻译,请查看Sphinx Internationalization Guide

【讨论】:

  • 标记为最佳答案,因为 Sphinx 是一个不错的选择。还找到了this alternative,但它不能很好地升级为许多语言。
  • '没有办法将文档字符串翻译成多种语言'这是错误的,下面 Matthias 的回答给出了如何做到这一点的例子。
  • 嗯,它可以工作,但我的眼睛看起来太棘手了。 Plus 不适用于静态分析工具。我相信越简单越好。
【解决方案3】:

我有同样的问题;有点:cmd 模块使用文档字符串向最终用户打印帮助,我真的需要一种方法来拥有多种语言的文档字符串。我是这样做的:

看看这个awesome tutorial 使用gettext 模块。这使您能够翻译任何 Python 应用程序。我是这样使用的:

import gettext
try:
    lang = gettext.translation('myawesomeapp', localedir='locale')
    lang.install()
except FileNotFoundError:
    _ = lambda x: x

现在,无论何时你想国际化一个文档字符串,都遵循这个模式:

class MyAwesomeClass:
    def incredible_method(with_fantastic_args):
        # Some marvellous code

    incredible_method.__doc__ = _('''\
Place here a fabulous docstrig for your incredible method.
This will be translated by the gettext module at runtime.''')

现在是阅读我前面提到的that tutorial 的时候了:在您的代码上调用pygettext,使用poedit 来创建翻译,然后玩得开心。

再见,拜萨诺斯。

【讨论】:

    【解决方案4】:

    关于我能想到的唯一实用的解决方案——而且它很丑——是在文档字符串中一个接一个地放置一种语言。例如:

    def findChocolate(variety):
        '''Locate chocolate - Encuentra la choloate - nuqDaq yuch Dapol '''
        ...
    

    【讨论】:

    • 这真的很丑,因为它不是真正可解析的,也不是“GetText-able”:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多