1

変数をコハナメッセージに渡す方法はありますか?それは、il8n変換によって取得できます。例:

Kohana::message('user', 'greeting')

messages / user.php:

return array
(
    'greeting' => __('user.greeting', array(':user' => $name ))
);

i18n / en.php:

return array
(
    'greeting' => 'Hello, :user'
);

il8nをi18nからのメッセージとKohana3のエラーメッセージにリンクする方法をつかみました

4

1 に答える 1

2

探している正確な答えはわかりませんが、現在の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'),
);
于 2012-05-10T09:30:55.207 に答える