YAMAGUCHI::weblog

土足で窓から失礼いたします。今日からあなたの息子になります。 当年とって92歳、下町の発明王、エジソンです。

pydoc内のドキュメントを翻訳していてはまったこと

はじめに

こんにちは、Python界のセカンドバージンです。さて、一昨日のエントリで書いたとおりJInja2ドキュメント日本語訳を公開しました。きっかけは最近Sphinxでテンプレートをつくろうと思ってたり、Flaskでアプリケーションつくろうと思っていたので、ふと思い立ったというだけなんですが。
で、このエントリでは前のエントリに書いていなかったちょっとしたこぼれ話を書きます。

Jinja2翻訳にあたりはまったこと

普通の製品ドキュメント、特に原文がSphinxを使っているドキュメントであれば翻訳はそのSphinxプロジェクトをコピーしてきてrstファイルを翻訳するだけです。しかしながら、Jinja2の場合はSphinx自体がJinja2を使っているためにちょっとはまりどころがあります。
「おまえは何を言っているんだ?」(画像略)という人は次の実行結果を見て下さい。

$ make html
sphinx-build -b html -d _build/doctrees   . _build/html
Running Sphinx v1.0.5
loading pickled environment... not yet created
building [html]: targets for 11 source files that are out of date
updating environment: 11 added, 0 changed, 0 removed
reading sources... [100%] tricks                                                                                         
/Users/ymotongpoo/docs/jinja2_docjp/docs/sandbox.rst:32: (WARNING/2) missing attribute default_binop_table in object jinja2.sandbox.SandboxedEnvironment
...

あれ?なんかWARNING一杯出てますね。おかしいなーと思ってよくよく考えてみると、いま翻訳してるのはJinja 2.6でインストールされてるのはJinja 2.5.5なんですね。エラーがでているのはautodocを使っている部分。つまりこれはJinja2.6で新しく定義された属性が存在しないためにエラーが出てるというわけです。
仕方がないので、取り急ぎの策ということでvirtualenvでJinja2だけが存在しないSphinx環境を作ります。

$ pip install sphinx
$ pip uninstall jinja2

翻訳用レポジトリのディレクトリ構成がこんな感じなんですが、翻訳する度にpython setup.py installをしていました。(ちゃんとvirtualenv環境にインストールされます)

.
├── CHANGES
├── docs
│      ├── Makefile
│      ├── _build
│      ├── _static
│      ├── _templates
│      ├── conf.py
│      ├── api.rst
|   ...
├── jinja2
└── setup.py

setup.py developeを使いましょう

しかしそれではあまりにダサいので何かもうちょっとマシな方法はないかなあと思っていたら清水川先生より素晴らしいお言葉が。

[11:55:47] しみずかわ: python setup.py develop を使うと良いよ。
[11:56:09] しみずかわ: in-placeでインストールしたことにしてくれるので、
[11:56:23] しみずかわ: 翻訳追加したらそのまま反映されるはず

早速使ってみました。

$ python setup.py develop
running develop
running egg_info
creating Jinja2.egg-info
writing requirements to Jinja2.egg-info/requires.txt
writing Jinja2.egg-info/PKG-INFO
...
running build_ext
Creating /home/ymotongpoo/.virtualenvs/sphinx/lib/python2.6/site-packages/Jinja2.egg-link (link to .)
Adding Jinja2 2.6 to easy-install.pth file

Installed /home/ymotongpoo/docs/jinja2_docjp
Processing dependencies for Jinja2==2.6
Finished processing dependencies for Jinja2==2.6

Jinja2のeggが /home/ymotongpoo/docs/jinja2_docjp (翻訳レポジトリのトップ)にリンクされた旨メッセージが出ていますね。あとはこれでソースコード内のコメントを翻訳してあげれば、docsディレクトリ内でmake htmlするだけでちゃんと翻訳が反映されます!
初めてpython setup.py developを使ったくらいの情弱なんですが、とても便利ですね!