スタート Python ドキュメント翻訳
以前書いた 翻訳のススメ という記事の続きです. 今回は, 実際に Python ドキュメント翻訳プロジェクトに参加し, どのように作業を進めていくかについて書いていきます.
プロジェクトに参加する
何はともあれメーリングリストに登録しましょう. http://www.python.jp/mailman/listinfo/python-doc-jp オープンソースプロジェクトでよく使われている Mailman です. ここからメールアドレスとパスワードを設定するだけです.
次に文書の翻訳作業を管理する Transifex というサービスにアカウントを作ります. https://www.transifex.com/
作ったアカウントでログインすると https://www.transifex.com/organization/python-doc-ja/dashboard/python-33-ja のページに行けるはずです. ここがプロジェクトのメインページです. プロジェクトの進行状況や, 時系列で翻訳量のグラフが表示されています.
このページ https://www.transifex.com/projects/p/python-33-ja/language/ja/ へ行くと, 翻訳対象の reStructuredText (以下 reST) ファイルが並んでいます. その reST ファイル一覧のヘッダ部分に “Join team” (日本語だとたぶん「チームに参加」とかかな?) ボタンがあるので, それを押せば参加申請完了です. たいていは管理者がメール通知を見て, その日のうちに参加が完了します.

Transifex の仕組み
Transifex では翻訳対象の reST ファイルをリソースと呼んでいます. リソースの一覧 (https://www.transifex.com/projects/p/python-33-ja/language/ja/) から, 翻訳したいリソース名をクリックし, “Translate now” (日本語だとたぶん「翻訳する」かな?) ボタンをクリックして翻訳開始です. リソース名は <ドキュメントの種類>--<ページ名> という形式になっています. 例えば, Python 標準ライブラリ gettext のページ (リソース) (http://docs.python.jp/3.3/library/gettext.html) の名前は library--gettext という名前になっています.

ここで翻訳を長く続けるコツですが, 自分が興味のある, 自分が最も読みたいと思うリソースを翻訳することです. 翻訳は機械的にできる作業ではなく, 内容を理解して咀嚼した上で訳文が書けるものなので, 続けるためには自分が知りたい, 翻訳した文章を自分が読みたいと思うものを翻訳すべきです.
基本の作業の流れ
基本的な作業の流れとしては,
翻訳したいリソースを選択
「Translate now (翻訳する)」ボタンをクリック
翻訳する段落を一覧から選択
普通は上から翻訳していくと思いますが, 途中から翻訳することもできます.
段落ごとに翻訳し, 保存
1 時間ごとに動いているドキュメントのビルド, サーバへのアップロードにより (http://docs.python.jp/3.3/index.html に) 公開される
となります.
原文が似ている訳文があるときは,「Suggestions」という欄に参考として表示されます. Python ドキュメントを翻訳していてよく挙げられているのは, 原文が一部分だけ修正されている段落です. その場合, 翻訳文もほぼ同じになることが多いので, 昔の訳文を基に修正された部分を反映させることはよくあります.
ショートカット
Transifex の Web 画面にはキーボードショートカットが設定してあります. 一覧は Web 画面から「Shift + / (「?」キー)」を押すか, 右上あたりにある歯車アイコンから「Shortcuts」メニューを選ぶと見れます.
私が普段使ってるのは「Tab」で「現在の訳文を保存し, 次の段落へ飛ぶ」です. これだと翻訳中の文章でも保存し翻訳済みとされてしまうので, 保存せずに次に行きたい場合は「Ctrl + ↓」か「Alt + ↓」を使います.

ローカルのエディタでも翻訳したい
Transifex がベースとしているのは gettext というツールです.
Python ドキュメントは Sphinx という文書作成ツールで作られています. 単純に言ってしまえば, 原文 (msgid, message ID) から訳文 (msgstr , message string) への対応 (Python で言うマッピング) を管理するのが gettext です. そのマッピングは .po という拡張子を持つファイルに収められています.
実際に中身を見れば分かると思いますが, msgid の後にそれに対応する msgstr が来て, 次の msgid がまた来る並びになっています. この .po ファイルは最初 msgstr 部分が空文字列になっていて, そこを訳文で埋めることが翻訳作業になっています. この作業は, Transifex では Web 画面から行いますが, テキストファイルとしてダウンロードし, ファイルを編集後にアップロードすることで好きなエディタを使っての作業も可能です.


私はエディタは Emacs を使っていますが, Emacs にも .po ファイルを編集する専用のプラグインがあります. 詳しい使い方は http://www.gnu.org/software/gettext/manual/html_node/PO-Mode.html や, 検索して調べてください.
慣れたエディタで作業するのも良いのですが, ファイルをダウンロードしたときに掛かる翻訳リソースのロックは 2 日間であることに注意してください. ダウンロードしたファイルは .rst ファイルごとなので, 勢い最後まで翻訳してからアップロードしたくなりますが, ダウンロード後 2 日を過ぎてロックが外れた場合, 他の人が翻訳作業を始めている可能性があります.
私は最初 Emacs で翻訳作業を行っていましたが, ついついロックの期限を忘れていて, アップロードするたびに誰かが先に翻訳してないか確認するのが面倒でした. 翻訳作業はそんなに速く行えるものではないので, 結局, Transifex の Web 画面から作業するようにしました.
Sphinx 上で gettext がどう働くかについての詳細は次の記事が参考になります.
終わりに
ソースコードに対する貢献以外にも, ドキュメントの翻訳という形で OSS プロジェクトに貢献することはできます. 貢献の方法はそれぞれが得意な方法ですれば良いと思います. もし,「ソースコードに対する貢献は難しいけど, このソフトウェアの素晴しさを広めたい」と思ったなら, ドキュメントの翻訳での貢献を考えてみてください.
そしてもし Python に興味があれば, 公式ドキュメントを読んで, 翻訳が不足している箇所を見付け, プロジェクトに参加してください! (これが言いたかった)