はじめに
こんにちは、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を使ったくらいの情弱なんですが、とても便利ですね!