在单独的目录

时间:2016-10-01 18:37:19

标签: internationalization python-sphinx

我处理将以不同语言发布的文档。这是我使用Sphinx的原因之一。

我知道如何生成翻译版本,但使用documentation中描述的设置,生成的文件将替换之前生成的文件。因此,在生成多个翻译时,我必须在执行任何其他操作之前将文件移动到另一个目录。在单独的目录中生成翻译会更实际(也更容易部署)。

有没有办法在我运行

时告诉Sphinx或makefile
make -e SPHINXOPTS="-D language='(lang)'" (format)

文件必须以/ build /(format)/(lang)?

生成

目前,只使用HTML构建(我怀疑还会使用其他内容),因此如果无法全局执行,则可以接受特定的解决方案。

Sphinx版本是1.4.6。

1 个答案:

答案 0 :(得分:2)

我通过自定义Python脚本(build.py)替换Makefile找到了一个有效的解决方案。

使用sys.argv,我会模仿make target行为。我为该语言添加了几个选项。使用子进程模块,正是其call()函数,我能够使用一组选项运行命令。该脚本基于一个函数,该函数生成由subprocess.call()执行的命令:

def build_command(target, build_dir, lang=None):
    lang_opt = []
    if lang:
        lang_opt = ["-D", "language='" + lang + "'"]
        build_dir += "/" + lang
    else:
        build_dir += "/default"

    return ["sphinx-build", "-b", target, "-aE"] + lang_opt + ["source", "build/" + build_dir]

lang参数允许我将每种语言分开,与目标无关。稍后在代码中,我只是运行

subprocess.call(build_command(target, target, lang))

使用指定目标(通常为target = "html")以所需语言构建文档。它还可以模拟make gettext

subprocess.call(build_command("gettext", "locale"))

等等......

可能存在更好的解决方案,但至少这一个可以胜任。