翻訳作業って何をするの?
前回 に引き続き Python ドキュメントの翻訳プロジェクトの話をします. 今回は翻訳プロジェクトが実際にはどんなふうに進められているかについて解説しましょう.
「翻訳作業」は形式的な見方をすれば, 英語で書かれた文章を日本語の文章に変換することです. CPython では, 英語の原文は Sphinx で作られていて CPython と一緒に GitHub レポジトリ で管理されています. では, これをフォークしてソースファイルを書き換えてビルドし, どこかのサーバーでホストすれば翻訳は完了でしょうか?
いいえ. 翻訳した時点では作業は完了したように思えるかもしれませんが, 原文はどんどん更新されていきます. その理由は CPython への文法の追加かもしれませんし, 新しい標準ライブラリの追加かもしれません. またドキュメントの誤りの訂正かもしれません. いずれにせよ訳文も原文の更新に追い付く必要があるでしょう. そのとき原文を直接訳文で置き換えてしまっていては, 原文の更新を管理するのが難しくなるでしょう.
gettext
そこで国際化 (internationalization, i18n) もしくは地域化 (localization, l10n) のツールを使うわけです.
Web 検索してみるとツールは色々ありますが, このプロジェクトでは, Sphinx が対応している gettext を使っています.
gettext がやっていることを図で書くとこんな感じになります. Sphinx では, ソースファイル 1 つに対し 1 つの .pot ファイルが作られます. 原文は Sphinx が適当な分量 (だいたい段落ごと) に分割して, .po ファイルの中に書き込みます.

gettext は翻訳を原文から訳文へのマッピングとして扱います. マッピングのキーの名前は msgid, 値の名前は msgstr です. 翻訳ファイルテンプレートである .pot ファイルや, 個別の言語の翻訳ファイルである .po ファイルの中には msgid と msgstr がペアになって並んでいます.
実際のファイルの内容がどんなものなのかは CPython の原文から作成した about.pot と about.pot を元に作成した日本語用の about.po を見てみてください.
.po ファイルを作ったときには msgid には原文の断片が設定されていますが, msgstr は空となっています. msgid に対応する訳文を msgstr に埋めていくのが翻訳作業ということになります.
Transifex
.po ファイルはテキストファイルなので, 好きなテキストエディタで翻訳できます. 私は Emacs 使いなので, po-mode というメジャーモードを利用します.
とは言え, 翻訳は msgid 1個だけを見てするものではなく, 単語 (特に専門用語, 技術用語や言い回し) の翻訳の統一, 前後の文脈との整合性も考慮しながら訳文を検討する必要があります. また, 前のバージョンから原文に変更が無ければ, たいていの場合, 訳文も変更せずに済みます. (これは技術文書だけに言えることかもしれませんが.)
そういった要件をサポートするツール, サービスもあります. Python ドキュメントの翻訳プロジェクトで使用しているのは Transifex というサービスです.

主に使っている機能は
- 用語集
- 原文が一致する訳文を自動で採用
- 原文が似ている訳文の提案
- レビュー機能
- コメント機能
です. 前後の文章の流れは Transifex では確認しづらいので, ビルドされた HTML を見て確認しています.
翻訳の公開
翻訳ファイルを Transifex からダウンロードして, 原文と一緒にビルドして, 出来上がった HTML と JavaScript, CSS, 画像ファイルなどをアップロードして公開します.
最後に
これらが翻訳プロジェクトで行っている作業の概要です. ここまでで, 翻訳作業をどんなふうに行っているか知ることができたのではないでしょうか.
翻訳をしたい, 自分もできそう, と思った方は, Google Group に入り, Transifex から参加申請をしましょう!
Google Group python-doc-jp: https://groups.google.com/forum/#!forum/python-doc-jp
Transifex: https://www.transifex.com/python-doc/python-36/dashboard/
単に翻訳プロジェクトの雰囲気が見たいなら, GitHub の python-doc-ja レポジトリ をウォッチするか, python.jp の Slack に #python-doc-ja チャンネルがあるので覗いてみてください. 参加申請は http://www.python.jp/community/#python-jp-slack からできます.
それでは.