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');

これで英語に翻訳されたものが表示される。

参考

CakePHPを多言語化する - Qiita
CakePHPの呪文 __('文字列') - Qiita
国際化と地域化