我处理将以不同语言发布的文档。这是我使用Sphinx的原因之一。
我知道如何生成翻译版本,但使用documentation中描述的设置,生成的文件将替换之前生成的文件。因此,在生成多个翻译时,我必须在执行任何其他操作之前将文件移动到另一个目录。在单独的目录中生成翻译会更实际(也更容易部署)。
有没有办法在我运行
时告诉Sphinx或makefilemake -e SPHINXOPTS="-D language='(lang)'" (format)
文件必须以/ build /(format)/(lang)?
生成目前,只使用HTML构建(我怀疑还会使用其他内容),因此如果无法全局执行,则可以接受特定的解决方案。
Sphinx版本是1.4.6。
答案 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"))
等等......
可能存在更好的解决方案,但至少这一个可以胜任。