多言語化CakePHP多言語化します。cakephpマニュアルのこのページに説明が書いてあります。あと、翻訳ファイルの作成については、ここが参考になりました。翻訳したい文字列を指定する翻訳対象にしたい文字列は、__()というのでくくります。翻訳ファイルの作成まず翻訳ファイルを作成します。下記のようなコマンドで作成できます。POTファイルというのをつくります。i18n下記を実行すると、potファイルが作成されます。default.potというのが自分で__()でくくった部分の翻訳ファイルです。sourcesmoファイルの作成potファイルは、cakePHPが翻訳できないので、moファイルというのを作る必要があります。Poeditというソフトでmoファイルの作成が可能です。Poeditを起動すると下記画面になるので、2番目の翻訳プロジェクトを新規作成するをクリックします。元になるPOTファイル(上記で作成したapp/Locale/default.pot)を選択すると、翻訳画面が表示されます。ここで翻訳を入力して、保存すると勝手にmoファイルも作成されます。保存場所とファイル名は、例えば英語の翻訳ファイルの場合、app/Locale/eng/LC_MESSAGES/default.poにします。これでcakePHPはブラウザの言語環境に応じて勝手に翻訳を表示してくれます。前提では、とりあえず__('ログイン')みたいな感じで、日本語でデフォルト文字列を作成していることとします。その場合、翻訳ファイルがなければ日本語で表示されますが、日本以外の国で翻訳ファイルがない場合は、英語表示にしたいとします。Configure::read("Config.language")言語環境を設定するには、下記でできます。・言語環境に応じたViewファイルを読み込ませる基本的には上記のはずですが、Configure::read('Config.language')で取得できる値が、en-usとかになり、engなどの3文字ではないです。よって、en-us等を翻訳ファイルの3文字ロケールコードに変換する処理が必要だと思います。cakePHPでは、en-usからうまいことengであることを判別しているはずなので、そのコードを利用することでできるのかなと思います。lib/Cake/i18n/L10n.phpに対応する配列定義がありました。ちなみに、en-usというのは英語圏のどの地域かまで指定するためのやつらしくて、3文字ロケールコードっていうのは英語とかざっくりした感じのやつっぽい。今回の翻訳でイギリスとアメリカで英語をわけるようなことはしないので、細かいやつを何しろ3文字ロケールコードに直すことにした。下記にAPIリファレンスがあります。この辺のを使うことで変換できるのかなと思います。$L10n->catalog($lang);$this->log($catalog['localeFallback']);上記をやると、ログにengと出力される。fr-frなら、fra。なんかbeforeFilter内だと、Configure::readで何にも返ってこない。下記のような関数をコンポーネントとして作って、PagesControllerのdisplayアクションとかで使えばできる。$path);$this->render($viewPath);これは、app/View/Pagesの中に、engとかjpnとかのフォルダを作って、それぞれの言語用の静的Viewファイルを格納している場合です。cakePHP優良プラグイン53選!!つかれた!大体上から人気ある順で並んでおります。2引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。