cakephp2.doc_005
最終投稿日:2019年11月20日
【サンプルソース】
<?php echo __("Dashboards"); ?>
<?php echo $this->Form->create("User",array(
"url"=>array("controller"=>"environments","action"=>"cakephp_index/bilingual"))); ?>
<?php echo $this->Form->input("hoge",array("type"=>"text","label"=>__("name1",true))); ?>
<?php echo $this->Form->end(__d("bilingual","sousin")); ?>
【多言語ファイルの設置】
[app][locale]に以下のディレクトリとファイルを設置する
jpn/LC_MESSAGES/default.po //日本語のファイルを作成するため「jpn」となる。
eng/LC_MESSAGES/default.po //英語のファイルを設置するなら「eng」となる。
< 書式 >
# /views/pages/menu_sonota/tagengo //コメントアウトは『#』しか使えないので注意
msgid "Dashboards" //ビュー側に設定した置換対象文字
msgstr "ダッシュボード" //置換する文字を設定する
※.poファイルはPHPの様な改行文字『;』はありません。
【ビューの設定】
置換させたい文字列を設定するには、
__("[msgid名]") //アンダーバーを2つ
また、cakephpのヘルパーで使用する場合は、文字がエスケープされないように
__("[msgid名]",true)
[例]
<input type="submit" name="comp" value="<?php echo __('complete_button') ?>">
※上の例はヘルパーを使用していないので『true』の指定は不要です。
<?php echo $this->Form->end(__("back_button",true),array("name"=>"back")); ?>
【default.po以外を使用する】
多言語化のファイル名は通常は『default.po』を使用します。
ファイルを数種類使いたい場合は以下の様にビュー側で設定します。
__d("sonota","[msgid名]") //『__d(』となります。(sontoa.poファイルを参照)
【Controller 設定例】
[ element ]
各ビューに共通の[Japanese][English]リンクを表示できる様にエレメント化する。
<?php echo $this->Html->link("[Japanese]",array(
"controller"=>"environments","action"=>"bilingual_control/jpn")); ?>
<?php echo $this->Html->link("[English]",array(
"controller"=>"environments","action"=>"bilingual_control/eng")); ?>
[ View ]
上記エレメントを表示
<?php echo $this->element("other/bilingual_control"); ?>
[ Controller ]
セッションに言語を設定し、リファラーへリダイレクトする。
function bilingual_control($lacale = null){
// 前のURLをフルパスで取得
$url = $this->referer();
$this->Session->write("language",$lacale);
$this->redirect($url);
}
[ AppController ]
上記でリダイレクトされるので、ここで言語を設定する。
public function beforeFilter(){
parent::beforeFilter();
if(!$this->Session->check("language")){
Configure::write('Config.language', "jpn");
}else{
Configure::write('Config.language', $this->Session->read("language"));
}
}