CakePHPを多元化するという記事を読んで
CakePHPを多言語化する - QiitaというQiitaの記事を読んだので、自分なりにまとめておこうと思う。
__()で書く
基のコード
<h2>Popular Articles</h2><h2>Popular Articles</h2>
多言語化したコード
<h2><?= __('Popular Articles') ?></h2>
他にもd(), n()もある。
POTファイルを作る
Console/cake i18n extract
を実行すると、Localeディレクトリの下にdefault.pot等のPOTファイルができる。
Poeditで翻訳ファイルを作る
作ったPOTファイル(default.pot)を元に翻訳ファイルを作る。
ソーステキストに対応する翻訳を入力するだけで良い。
ファイルはsrc/Locale以下に置く。
各言語用のサブファイルは以下のようになっている必要がある。
/src /Locale /en_US default.po /en_GB default.po validation.po /es default.po
Config.languageの設定
ブラウザの情報を基に言語が判断されている。
英語に変えたい場合は、
Configure::write('Config.language', 'eng');
これで英語に翻訳されたものが表示される。