Kohana имеет надежную систему поиска, базирующуюся на ключах массивов, для определения системных сообщений.
Получение сообщений
Используйте метод Kohana::message() для получения сообщения по ключу:
Kohana::message('forms', 'foobar');
Этот метод найдет в файле messages/forms.php значение ключа foobar:
<?php return array( 'foobar' => 'Hello, world!', );
Также можно использовать вложенные каталоги и суб-ключи:
Kohana::message('forms/contact', 'foobar.bar');
Этот метод найдет в файле messages/forms/contact.php значение ключа [foobar][bar]:
<?php return array( 'foobar' => array( 'bar' => 'Hello, world!', ), );
Примечания
— Не используйте метод __() в файлах сообщений, так как эти файлы могут кэшироваться и метод не будет работать должным образом.
— Сообщения объединяются в каскадной файловой системе и не будут перезаписаны, как классы и виды.
Пожалуйста, зарегистрируйтесь для комментирования.
Зашибись) Теперь буду туда сообщения с ошибками пихать и забирать по требованию) Спасибо, комрад!
Последние пять переводов один хороший человек делал. Я только перечитал и подправил кое-где перевод.
Пользуйтесь на здоровье.
Думаю, стоит добавить, что у метода есть третий параметр $default. Понятно, что он помогает определить значение по умолчанию, если сообщение по ключу не будет найдено. Например, Kohana::message(‘forms’, ‘foobar’) вернет NULL, а запись Kohana::message(‘forms’, ‘foobar’, ‘Неверный параметр’) вернет строчку: ‘Неверный параметр’.
Это перевод документации с официального сайта по возможности близко к тексту. А там увы очень многие моменты опущены.
А как в файл сообщений отправить переменную. Ну, к примеру в файле содержится сообщение приветствия:
Привет $user!
где $user – логин пользователя, который отправили в файл из какого-то скрипта.
Короче говоря, надо хранить сообщения с изменяющимися данными: имя пользователя, id сообщения, адрес и т.д.
Может даже не отправлять, а как-то по-другому реализовать?
Не знаю актуальна ли вам эта информация, но другим она может пригодиться.
Как вариант можно получить сообщение привычным способом в только преременную:
$succsessMsg = Kohana::message(‘user’, ‘registration.succsess’);
А затем воспользоваться нативной функцией php — str_replace. К примеру если наше сообщение:
‘succsess’ => ‘На указанный Вами почтовый адрес :email была отправлена инструкция о дальнейших действиях.’
то эксплоит состоит в следующем:
str_replace(‘:email’, $userMail, $succsessMsg).
Извеняюсь за грамматические ашипки, тороплюсь =)