探している正確な答えはわかりませんが、現在のKohana :: message()メソッドを上書きしてもかまわない場合は、解決策を提案できます。私は自分のアプリで同様のことをしました。
次のコードを使用して、「applications/classes」にKohana.phpファイルを作成するだけです。
class Kohana extends Kohana_Core {
public static function message($file, $path = NULL, $default = NULL, $replacements = array())
{
static $messages;
if ( ! isset($messages[$file]))
{
// Create a new message list
$messages[$file] = array();
if ($files = Kohana::find_file('messages', $file))
{
foreach ($files as $f)
{
// Combine all the messages recursively
$messages[$file] = Arr::merge($messages[$file], Kohana::load($f));
}
}
}
if ($path === NULL)
{
// Return all of the messages
$message = $messages[$file];
}
else
{
// Get a message using the path
$message = Arr::path($messages[$file], $path, $default);
}
return !empty($replacements) ? strtr($message,$replacements) : $message;
}
}
基本的に、唯一の注目すべき変更は、$replacements
引数の追加でreturn !empty($replacements) ? strtr($message,$replacements) : $message;
あり、メッセージの内容を置換配列内の内容に置き換えます。
だからあなたは今これを行うことができます:
Kohana::message('user', 'greeting', NULL, array(':user' => $name));
messages / user.php:
return array
(
'greeting' => __('user.greeting'),
);