2016-10-01 74 views
2

我使用将以不同语言发布的文档。这是我使用狮身人面像的原因之一。在单独的目录中生成翻译后的Sphinx文档

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

有没有办法告诉狮身人面像或makefile文件,当我运行

make -e SPHINXOPTS="-D language='(lang)'" (format) 

的文件在/编译/(格式)要生成/(郎)?

现在只有HTML版本被使用(我怀疑还有其他的东西会被使用),所以如果一个特定的解决方案无法在全球范围内完成,那么这个解决方案将被接受。

狮身人面像版本是1.4.6。

回答

2

我通过用自定义Python脚本(build.py)替换Makefile来找到了一个工作解决方案。使用sys.argv,我模仿make target行为。我为该语言添加了几个选项。使用子进程模块,正是它的功能,我能够使用一组选项运行命令。该脚本是基于产生所述命令由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")) 

等等......

更好的解决方案可能存在,但至少这一次将做的工作。

相关问题