2016-10-01 7 views
2

私は別の言語で公開されるドキュメントを作成しています。それが私がスフィンクスを使う理由の一つです。翻訳されたSphinxドキュメントを別のディレクトリに構築する

翻訳版の作成方法はわかりますが、documentationに記載されている設定では、以前に生成されたものが置き換えられます。したがって、複数の翻訳を生成する場合は、他の作業を行う前にファイルを別のディレクトリに移動する必要があります。別々のディレクトリに翻訳を生成する方がより現実的です(展開が簡単です)。

スフィンクスや私が

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

を実行すると、ファイルがに/ビルド/(フォーマット)を生成する必要があることをメイク/(LANG)を指示する方法はありますか?

今のところ、HTMLビルドのみが使用されています(そして、何か他のものが使用されるのではないかと思われます)ので、グローバルに行うことができない場合、特定のソリューションが受け入れられます。

スフィンクスのバージョンは1.4.6です。

答えて

2

私は、MakefileをカスタムPythonスクリプト(build.py)に置き換えることで、解決策を見つけました。

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パラメータです。その後のコードで、私は指定されたターゲット(通常は、target = "html")と希望の言語で文書を作成するには

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

を実行します。

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

のように...

より良い解決策は存在してもよいが、少なくともこの1つは仕事をする:それもmake gettextをエミュレートすることができます。

関連する問題