CakeAdvent2012 Day3 Cake CookBookの翻訳差分チェックサイト作りました


CakeAdvent2012の3日目を担当します。ハッシュタグは #cakeadvent2012

昨日はfukayatsuさんの「CakePHPと僕とcakes」でした。
cakesはエンジニア募集中のようです! RoRに載せかえとか面白そうですね。

はじめに

最近はIPAという苦めのビールが大好きです。ペールエール系なら大体好き。今回の話はビールと関係なくて恐縮なのですが、CookBookの翻訳に関してです。


CookBookは、githubで管理されており、Sphinxというツールを使ってhtmlを作成して表示します。

基本的には、enというフォルダのrstファイルをjaいかにコピーして、翻訳してgithubのpullリクエストを送り、取り込んでもらえればCookBook公式サイトの日本語ページも見れるようになります。翻訳手順などに関しては、下記の記事を参照ください

問題点

ある時点で日本語に翻訳しても、オリジナルの英語ドキュメントがどんどん更新されていくと、その差分を追いかけて更新していかないといけません。ただ、差分があるのかどうかすぐにわからないので、git logの日付などを見ながらチェックしていくことになります。
翻訳していないファイルもいくつかあり、それらはメニューにすら載らないのでドキュメントが存在していないように見えます。

解決策

それらを一覧で確認するためにphpmatsuriの朝の1時間でざっと土台をつくり、今日いくつかの機能を足して公開しました。

Tralslation Tool of CookBook
http://cookbookdiff.eizoku.com/


現在は下記の機能を実装しています。

  • 翻訳済み、未翻訳、翻訳が古くなっているファイルを一覧表示
  • 翻訳が古くなっているものは、該当の差分を表示
  • 日本語以外にも、フランス語やスペイン語などの差分表示も対応


古くなっている箇所の差分は、正確なものではなく、日本語ファイルの最終コミット日よりも新しいコミットが英語ファイルにあればそれを表示しています。githubのページにもリンクしているので、差分のファイル内容もすぐに確認できます。

今後の課題

今後は、ファイルはあるが、明らかに英語ドキュメントよりも容量が少ないものや、英語版をコピーしただけのものなどを検知してワーニング表示していきたいと思います。
あとデザインが適当なので、だれか手伝ってもらえると助かります。

使っているgitコマンド

今回この差分表示実装などで知らなかったgitのオプションがいくつかありました。
参考資料

たとえば、git log --since=日付 でやると、指定日以降のコミットが出てきます。
また、--untilオプションでは指定日前のコミットが見えるので、組み合わせると期間の指定ができます。

git log --since="Sun Aug 28 23:06:27 2011 -0400" --pretty="%H - %s"  ファイル名

あと、コミット日付だけ出力とか、1件だけ表示させるとか。

git log --pretty=format:"%cd" -1 ファイル名

これらのgitコマンドをphpのexe()で実行してたのですが、複数行の返しがある場合は、shell_exec()じゃないといけないとか。

おわり

明日は、安藤さんのイベントディスパッチャーの話のようです。
CandycaneではCakeEventクラスを結構使っているようなので、その話かな。楽しみ!

Cake情報

本日、CakePHP2.3-RC1がでました。安定版リリースまでもうすぐですね。CakePHP2.2.4も出ています。
http://bakery.cakephp.org/articles/lorenzo/2012/12/02/cakephp_2_3_0-rc1_and_2_2_4_are_finally_here