読者です 読者をやめる 読者になる 読者になる

AWS / PHP / Python ちょいメモ

amazon web service , PHP, Python を使ったときのメモ。日本語でググってもわからなかった事を中心に。

CakePHP 多言語化ステップ

CakePHP2.x TIPS PHP

CakePHPi18n(+10n?)機能を使うと、Webページの文章の多言語はもとより、404, 500エラーなどのエラーページのメッセージなども多言語化できます。

そもそも、デフォルトで生成されるコード(Layout/default.ctpなど)は、多言語化利用を前提としたつくりになっており、各所に __(...) とか _d(..) のようなi18nメソッドが散見されます。最初は何の事かわからず苦労しました。そのため多言語化する予定はなくとも、Cakeを利用される方は知っておくと迷わなくなるので良いのではないかと。


以下、CakePHP2.4.10で実施した手順のメモ

手順

メッセージ・文章系

  1. 多言語化を意識しながらページを作成
  2. コマンド cake i18n を実行して pot ファイルを作成
  3. pot ファイルを PoEdit で読み込み翻訳し、po, mo ファイルを作成
    • 「ファイル」→「POTファイルを元に新しいカタログを作成します」
  4. 動作確認 (以下、1に戻ってプロジェクト完了まで繰り返す)

その他リソース(画像・CSS

メッセージ・文章は、前述の方法で多言語対応が可能ですが、他のリソース(画像やCSS)などを言語によって切り替えたい時にはどうするのが良いのでしょうか?

今回対応したプロジェクトでは、URLに /eng/ のような言語コードを含ませて、それを取得して画像ファイル名のPostfixとして利用という方法をとりました。これに対応してくれるプラグインとかあるのかな?

TIPS

PoEditで「invalid nplurals value」エラーが出たときの対処

日本語の場合は下記でよいはずですが、

"Plural-Forms: nplurals=1; plural=0;"

未翻訳メッセージで常に単数形になってしまうので、英語にあわせて下記指定が無難なようです。

"Plural-Forms: nplurals=2; plural=(n != 1);"