最近、cakePHP3を使っています。
しばらくfuelPHPとか、あと名前も忘れましたがいくつかPHPフレームワーク使っていました。
しかしcakePHPの規約たくさん、でも覚えてしまえば分かりやすいぬるめのお湯的な感覚が忘れがたく、PHP5.2を捨ててクラスのauto loadとチェインによるSQL生成さえ対応してくれればいつでも戻ってくるつもりでした。そしたら、いつの間にかcakePHP3になってそれらも実装されているし、いろいろ変わっているではありませんか。
しばらく使ってみた感想は、正統な進化で慣れてくるとやはり使いやすいです。しかし、ドキュメントの劣化がひどいです。かなり公式が分かりづらいです・・・。
さて、今日はbakeで自動生成されるView画面のリンク名を日本語に翻訳していく時の簡単なテクニックです。
↓画像のように日本語化したいと思います。
1 |
$ bin/cake bake all textures --prefix admin |
とコマンドを打てばtexturesテーブルを元にindex,view,edit,addの各画面を勝手に作ってくれる、モックアップに超便利な機能です。
生成した画面の左のメニューなど、ソースでは
1 |
<li><?= $this->Html->link(__('List Textures'), ['action' => 'index']) ?></li> |
といった感じになっていると思いますので、翻訳ファイル(src/Locale/ja/default.po)は
1 2 |
msgid "List Textures" msgstr "画像一覧" |
が必要ですね。
List ..以外にもAdd ..、New …などあり、これだと翻訳が必要になる文章が多くなりますので
1 |
<li><?= $this->Html->link(__(__('List {0}'), __('Textures')), ['action' => 'index']) ?></li> |
とViewを書き換えることを提案します。
1 2 |
msgid "List {0}" msgstr "{0}一覧" |
を用意したら “Textures一覧”と翻訳されます。
1 2 |
msgid "Textures" msgstr "画像" |
Texturesの翻訳も用意したらちゃんと「画像一覧」と全文翻訳されます。この方法だとdefault.poの記述はかなり少なく済みます。
既に生成された全ファイルに対して一気に変えたいという場合は
1 2 |
検索:__\('List ([^']+)'\) 置換:__(__('List {0}'), __('$1')) |
の正規表現でどうぞ。
あれ、この内容、前にもどこかに書きましたっけ??
あとは生成するテンプレート自体を変えるやり方とか、翻訳のもう少し詳しいやり方とか気が向いたら書きます。