Symfony2 ドキュメントの翻訳手順 cookbookを翻訳

前回の記事で確認環境の準備ができたので今回はcookbookを翻訳をしてみます。
基本的に本家と日本語版のディレクトリ構造は同じではありますが、
日本語版が本家について行けてない部分がありますので、そこは推測する感じで行きます。

本家のドキュメントのリポジトリ
http://github.com/symfony/symfony-docs

日本語版のドキュメントのリポジトリ
https://github.com/symfony-japan/symfony-docs-ja

(1)翻訳の対象を決める

cookbookはだいぶ翻訳をされてますが、本家リポジトリから翻訳されていない文章を探します。
本家のgithubを参照する場合はmasterを見ずに、2.0、2.1と訳したいバージョンのブランチに切り替えます。
例えばroutingディレクトリを見てみると日本語版に「redirect_in_config.rst」のファイルが無いので
翻訳されていない事が解ります。
手頃なので今回はこのファイルを和訳してみます。

https://github.com/symfony/symfony-docs/tree/2.0/cookbook/routing
https://github.com/symfony-japan/symfony-docs-ja/tree/master/cookbook/routing

※もちろん既存のファイルで翻訳されてない部分を翻訳するのもありです。

また、翻訳担当のページもあるのでここで他の人が翻訳しようとしていないか確認し、
作業しようとしているファイルを追記すると良いです。
https://github.com/symfony-japan/symfony-docs-ja/wiki/%E7%BF%BB%E8%A8%B3%E6%8B%85%E5%BD%93

(2)作業準備

前回の環境構築後に日本語版ドキュメントのリポジトリ
修正が掛かっていないか確認します。

# 日本語版のリモートを追加
$ git remote add symfony-japan git://github.com/symfony-japan/symfony-docs-ja
# pullして変更が無い事を確認
$ git pull symfony-japan master
From git://github.com/symfony-japan/symfony-docs-ja
 * branch            master     -> FETCH_HEAD
Already up-to-date.

特に変更はないようなのでmasterより今回の作業のためのブランチを切ります。

# 日本語翻訳環境に移動
$ cd /home/sphinx/symfony-docs-ja
# 今回の翻訳用ブランチを作成
$ git checkout -b translate-routing-redirect_in_config
$ git branch -a
  master
* translate-routing-redirect_in_config
  remotes/origin/2.0
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

本家のドキュメントを取り出して、日本語環境にコピーします。
本家はSymfony2.0用と2.1用でドキュメントのブランチを分けてるようです。
日本語版の方は2.0用時に作成されたものなので、本家の2.0ブランチからドキュメントを取得します。

# 本家のドキュメントを取得
$ cd /home/sphinx
$ git clone https://github.com/symfony/symfony-docs.git
# 本家のドキュメントのブランチを2.0に切り替える
$ cd symfony-docs
$ git branch -a
* master
  remotes/origin/2.0
  remotes/origin/2.1
  remotes/origin/HEAD -> origin/master
  remotes/origin/charset-fix
  remotes/origin/exception-handling-note
  remotes/origin/master
$ git checkout -b 2.0 remotes/origin/2.0
$ git branch -a
* 2.0
  master
  remotes/origin/2.0
# 英語ドキュメントのデータを日本語翻訳環境にコピー
$ cp cookbook/routing/redirect_in_config.rst ../symfony-docs-ja/cookbook/routing/redirect_in_config.rst

原文が更新されても追跡できるように末尾に日付・名前・SHAを記載します。
SHAの値は対象ファイルの本家commit履歴の下記から取得できます。
(git logからもてっとり早く見れます)

f:id:taka512:20120916162124p:plain

# 日本語翻訳環境のドキュメントを修正
$ cd /home/sphinx/symfony-docs-ja
$ vi cookbook/routing/redirect_in_config.rst
.. index::
   single: Routing; Configure redirect to another route without a custom controller

------略-------

The ``permanent`` switch tells both methods to issue a 301 HTTP status code.

.. 2012/09/16 taka512 ed4ea54e486600e07f17215b0b2999730f0666e1

これで準備は完了です。

(3)翻訳する

とりあえず、下記点に気をつければ問題無いかなと思っています。

・既存のsphinxっぽい記述は崩さない。
・空白はなるべく原文に準じる
・他の翻訳の日本語の文体を眺める

今回は新規追加なので一覧からの導線も追加します。

# redirect_in_configを追加します
$ vi cookbook/map.rst.inc
* **ルーティング**

  * :doc:`/cookbook/routing/scheme`
  * :doc:`/cookbook/routing/slash_in_parameter`
  * :doc:`/cookbook/routing/redirect_in_config`

(4)確認する

sphinxでmakeして確認します。

(5)コミットしてpull requestを送信する

自分のgithub上のリモートレポジトリにpushします。

$ git add cookbook/routing/redirect_in_config.rst
$ git commit cookbook/map.rst.inc cookbook/routing/redirect_in_config.rst
$ git push origin translate-routing-redirect_in_config
Enter passphrase for key '/home/sh-takahashi/.ssh/id_rsa':
Counting objects: 10, done.
Delta compression using up to 3 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 1.40 KiB, done.
Total 6 (delta 3), reused 0 (delta 0)
To ssh://git@github.com/taka512/symfony-docs-ja.git
 * [new branch]      translate-routing-redirect_in_config -> translate-routing-redirect_in_config


pushが成功したら自分のgithubにログインします。
ブランチを切り替えて最新の更新が自分になっていれば成功です。
pullリクエストを送信します。pullリクエストが取り込まれれば成功となります。

f:id:taka512:20120916174835p:plain

(6)後始末

後始末は大事です。翻訳担当から自分の記述を削除します。

これで一連の流れは終わりです。