ボクがPhalcon翻訳プロジェクトでやらかしたコト


## はじめに
こんにちは。[CYBIRDエンジニア Advent
   Calendar](http://qiita.com/advent-calendar/2014/cybird)兼[Phalcon Advent Calendar](http://qiita.com/advent-calendar/2014/phalcon)
   20日目の[@MiuraKatsu](http://qiita.com/MiuraKatsu)です。

[CYBIRDエンジニア Advent
   Calendar](http://qiita.com/advent-calendar/2014/cybird)の19日目は[@khironori](http://qiita.com/khironori)さんの[PHPCSとJenkinsでコードレビューの負担をちょっとだけ軽くしたい](http://qiita.com/khironori/private/c145d7e3eed7b2a5a01a)でした。Jenkins使って自動化するのは、すばらしいですね。僕もどんどん取り入れていきたいです。

[Phalcon Advent Calendar](http://qiita.com/advent-calendar/2014/phalcon)の19日目は、[@kenjis](https://twitter.com/kenji_s)さんの[Phalcon Forumを動かしてみる](http://blog.a-way-out.net/blog/2014/12/19/phalcon-forum/)でした。すばらしいですね。

## そもそも
Phalconを知ったのは去年のことでした。

"最速"というフレーズに惹かれて、サイトを見に行ったのですが、
日本語のドキュメントがまだ充分にできておらず、
英語力が残念な私は半分あきらめていました。

しかし、有志で日本語訳をされている方がいらっしゃると聞き、
英語の勉強にもなるよとそそのかされた結果、
細々とですが、翻訳活動に参加するようになりました。

## Phalconとはなにか

[Phalcon Advent Calendar](http://qiita.com/advent-calendar/2014/phalcon)の１日目で[@koyhoge](http://qiita.com/koyhoge)さんが[Blog](http://koyhogetech.hatenablog.com/entry/2014/12/02/phalconphp)で説明してくださってますが、
まあ、簡単に言うと「PHPのExtensonとしてC言語で書かれた爆速フレームワーク」です。

Cで書かれているので爆速です。

## Phalconのドキュメントについて

Phalconのドキュメントはgithubで管理されています。
https://github.com/phalcon/docs/

ドキュメントの書式は[Sphinx](http://docs.sphinx-users.jp/)(reStructuredText)形式で書かれており、
Htmlへのビルドは[Read the Docs](https://readthedocs.org/)で行われています。
(※[Sphinx](http://docs.sphinx-users.jp/)ってPython製のドキュメントビルダーです)


## 翻訳プロジェクト

オープンソース([new BSD licence](http://docs.phalconphp.com/ja/latest/reference/license.html))のプロジェクトですので、ドキュメントの修正や翻訳もコミュニティでおこなっています。
--[仲間に加わろう](http://phalconphp.com/ja/about)

つまり、誰でも参加できるってことです。
ボクでも。

## 参加方法
翻訳プロジェクトに参加するには二通りの方法があります。
それぞれ、詳しく説明がされている資料があるので詳細についてはそちらをご覧いただくのが良いかと思います。

1.GitHubのリポジトリに翻訳内容のPullRequestを送る。
　参照：[PHPフレームワーク Phalconのドキュメント翻訳について](http://www.slideshare.net/inudog/phalcon)

2.Transifex上で翻訳する。
　参照：[Phalcon PHPの翻訳チームにジョインした話](http://qiita.com/nntsugu@github/items/77ed9c389d173af3c4f4)

一応、現在はTransifexでの管理に移行されているようです。
https://github.com/phalcon/docs/blob/master/CONTRIBUTING.md


##ボクがやらかしたコト
Transifexのサイト上で翻訳するのに、ちょっと飽きてきて
もっと上手いことできないかなって思っていたら、見つけました。

TransifexにはtxというClientツールがありました。
http://docs.transifex.com/developer/client/

gitみたいなことをTransifexに対してできるツールのようです。


python製のようですね。
さっそくpipでinstallします。

```
$ pip install transifex-client 
```

initでプロジェクトの初期化
	
```
$ tx init
```

set --auto-remote でプロジェクトの設定をします。

```
$ tx set --auto-remote https://www.transifex.com/projects/p/phalcon/ 
```

pullしてローカルにリソース引っ張ってきます。今回はjaだけ。

```
$ tx pull -l ja -s 
$ tree
.
└── translations
    ├── phalcon.documentation
    │   ├── en.json
    │   └── ja.json
    └── phalcon.website
        ├── en.php
        └── ja.php
```

なるほど。なるほど。
まあ、今回は動きを見たいだけで、特に翻訳するわけじゃないので、中身はいじらず、そのままpushしようかな。

```
$ tx push -t 
```

**ハイ、ここ！**

ここでやらかしました！

txを使ってpullしたja.jsonファイルなんですが、
中身はこんなかんじ。

```
{
    "index_8a6dd07bd4541406e4cf28eb5cdcc175": "ようこそ！",
    "index_0ea69a6ad0b19617ae367ad091d98683": "新しいアプローチで作られたPHPフレームワーク、Phalcon
へようこそ。 我々の使命は、パフォーマンスを気にせずにウェブサイトやアプリケーションを開発できる、先
進的なツールを提供することです。",
    "index_0e674667caa52aee120be5d11767fff6": "Phalconとは?",
  .
  .
  .
}
```
key-value形式のjsonになっています。

未翻訳のところは

```
    "assets_da38d11ae4639174732c3a3a7b3c539a": "It starts getting a collection of resources from the assets manager, a collection can contain javascript or css resources but not both. Some resources may be remote, that is, they're obtained by HTTP from a remote source for further filtering. It is recommended to convert the external resources to local eliminating the overhead of obtaining them.",
    "assets_86e4862e10edfdeada3c6627782eb1a1": "As seen above, method addJs is used to add resources to the collection, the second parameter indicates whether the resource is external or not and the third parameter indicates whether the resource should be filtered or left as is:",
    "assets_018bbed3aeeec02df927ee3f6c36fe33": "This a remote resource that does not need filtering"
```
こんな感じで原文が入ってます。

ところが！
このままpushするとなんとこの原文が入ってる部分も翻訳済みと解釈されてしまいます。
つまり、未翻訳の部分が残っていても、翻訳率100%となってしまうのです！

[@kenjis](https://twitter.com/kenji_s)さんに指摘されて慌てて、日本語訳だけを抽出してpushしたんですが、登録されたものは変わりませんでした・・・

サポートに連絡いただいたのですが、改善せず・・・

[@kenjis](https://twitter.com/kenji_s)さん達レビュアーの皆さん、ご迷惑をお掛けして申し訳ない・・・


## 結論
txでpullしたら、全部翻訳してからじゃないとpushしちゃダメ！

## 最後に
phalcon使ってて、日本語のドキュメント無いのかよ！とお嘆きのあなた。
是非あなたのお力で、日本語ドキュメントを充実させましょう。

ボクもこれに懲りずに、微力ながら貢献していきたいと思います。

明日は[CYBIRDエンジニア Advent Calendar 2014](http://qiita.com/advent-calendar/2014/cybird)は[@cy-mitsuki](http://qiita.com/cy-mitsuki)さん、
[Phalcon Advent Calendar 2014](http://qiita.com/advent-calendar/2014/phalcon)は[@morisuke](http://qiita.com/morisuke)さんになります。
よろしくおねがいします！