[FuelPHP] メッセージを可変にする方法
メッセージの可変値を指定文字列に置き換える方法
基本的に FuelPHP では Lang クラスを使ってメッセージを表示する。
使用方法
色々と方法はあるけれど、app/lang/ja/message.php
のsearch_result_num
を読み込みたいときは、// 言語ファイルの読み込み
Lang::load('message', true);
// 出力
echo Lang::get('message.search_result_num');
みたいな感じでやる。
ただ、単純にこの方法で読み込んだ時はそのまま文字列を引っ張ってくるので柔軟なメッセージを返すことはできない。
message.php (例)
<?php return array ( 'search_result_num' => '検索結果は●件です', );
やりたいこと
「検索結果は●件です」の件数部分を可変にしたい。可変値を置き換える
Lang::get
するとString
が返ってくるから、それに対して置換する方法もある。
ただ、Lang::get
にはそういうものも用意されているので、それを使う。 方法
まず、言語ファイルの方には以下のように可変値を書く。return array (
'search_result_num' => '検索結果は :num 件です',
);
いつも通り読み込む
Lang::load('message', true);
出力する
echo Lang::get('message.search_result_num', array('num' => '1,200'));
// ⇒ 検索結果は 1,200 件です
Lang::get の第 2 引数に、対象の可変値と渡す値を配列で指定してやる。
自前でreplace
するより可読性は高いと思う。
一応、ドキュメントのLangクラスのページにも書いてあるけれど、パラメータが渡せることしか書いてなくて分かりづらい。