Sphinxを使用してLLVMの中国語ドキュメントを翻訳


Sphinxは非常に便利なドキュメント生成ツールで、以前から耳にしていましたが、最近はLLVMのドキュメントを翻訳する計画があり、LLVMのドキュメントソースファイルを開くと、ドキュメント全体が整理されていることがわかりました.ダウンロードした最新版LLVM-3.8版のソースコードは、Sphinxを完全に使用してドキュメントを生成しているので、Sphinxに関する使い方も学びました.
Sphinxはpythonが作成したコマンドラインツールで、python 3またはpython 2で正常に動作し、インストールは流行のpipでインストールできます.
$ pip install sphinx --upgrade
$ pip install sphinx-intl

Sphinxの依存項目は比較的新しいので、更新したほうがいいです.sphinx-intlは、多言語翻訳を実現するためのコマンドラインツールです.
Sphinxは非常にユニークで便利なコード翻訳モデルを持っており、ツールで英語版で書かれたドキュメントの文字をすべて抽出することができ、.poファイルの下で、ユーザーが簡単に修正と翻訳を行うことができます.最後に、生成時の言語構成に基づいて、対応する言語バージョンのドキュメントを構築します.
しかし、Sphinxがどのように翻訳抽出を行っているかにかかわらず、LLVMドキュメントの構築を見てみましょう.
基本HTMLドキュメントの構築
デフォルトLLVMのdocsディレクトリの下のmakefileはdoxygenに使用されます.ここではMakefile.sphinxをデフォルトのmakefileに変更します.これにより、次のコマンドでは、原版-f Makefile.sphinxに対するパラメータは表示されません.
まずhtmlバージョンを構築するには、非常に簡単で、直接makeデフォルトパラメータでいいか、make htmlでもいいです.
これにより、_buildディレクトリの下に対応するウェブサイトフォルダが生成されます.
このように構築されたドキュメントは、静的サイトとして直接公開することができますが、github上のgitpagesに公開されるのは少し問題があります.ここではまず言わないで、次のリリースの注意の中で詳しく話します.
ドキュメント内のテキストを抽出して翻訳を開始
私たちの目標は翻訳で、英語のドキュメントをできるだけ正確に中国語のドキュメントに変換することです.ここではsphinx-intlツールを使用して翻訳を行います.
  • まず構成conf.pyファイルconf.pyはsphinxの構成ファイルであり、国際化翻訳フォルダを追加する必要があります:py
    language = 'zh_CN' # language supported
    locale_dirs = ['locale/'] # path is example but recommended.
    gettext_compact = False # optional.
  • 変換が必要なテキストをpotファイルリストに抽出するには、
    $ make gettext
    の場合、_buildディレクトリにlocaleフォルダが表示され、抽出されたすべてのテキストセグメントである.
  • 対応言語のバージョン
    $ sphinx-intl update -p _build/locale -l zh_CN
  • を更新
  • 手動で抽出されたセグメントを翻訳する場合、localeディレクトリにアクセスできます.ドキュメントプロジェクトのルートディレクトリの下にあるlocaleです.これこそ、テキストを翻訳する.poフォルダです.
    
    #: ../../builders.rst:4
    
    msgid "Available builders"
    msgstr ""
    msgidとmsgstrは1対1で、すべて抽出したテキストの翻訳で、あなたが翻訳に対応すれば、rstファイルのフォーマットに注意して、翻訳はめったに問題がなくて、スタイルは完全に一致して、しかもリンクは乱れません.
  • は新しいドキュメントを構築します.conf.pyの下でデフォルトのlanguageを構成しているので、このときに再makeすれば、プロジェクトドキュメントは中国語版に生成されます.

  • 効果を見る
    今日の午后、sphinx+夜の翻訳を研究して、LLVMのホームページのトップページを大体翻訳して、兴味のある友达は私がgitpagesに発表した中国语のドキュメントを见ることができます:
    http://sunxfancy.github.io/llvm-cn/
    また、英語が上手でLLVMを使っている方は、私と一緒にこのプロジェクトを翻訳して、より多くの人に便利になることを歓迎します.
    プロジェクトのパブリッシュに関する小さな問題
    前にgitpagesにパブリッシュするのにいくつかの問題があり、_staticなどの_接頭辞付きフォルダはアクセスできません.考えてみるとgithub自体の問題だと思います.sphinxドキュメントを見ていると、gitpagesに同時にパブリッシュしなければならないファイルが見つかりました..nojekyll、この空の小さなファイルはgithubの解析ルールに直接関係しているため、gitpagesはデフォルトのフィルタルールを停止し、リソースファイルへのアクセスを実行します.