Пользовательские сообщения об ошибках i18n в Kohana 3.2
Я понимаю способ создания пользовательских сообщений об ошибках в Kohana 3.2: Kohana 3.2: Пользовательское сообщение об ошибке для пользовательского правила проверки?
Моя проблема с этим слишком повторяется, потому что мне нужен отдельный файл для модели пользователя, модели поста и т. Д.
Есть ли способ использовать мои собственные сообщения об ошибках в большинстве случаев? Я хотел бы использовать их с i18n.
2 ответа
Путь к интернационализации сообщений заключается в следующем: в вашем файле сообщений замените текст на английском языке переводческим вызовом, как показано ниже.
return array
(
'code' => array(
'not_empty' => __('code.not_empty'),
'not_found' => __('code.not_found'),
),
);
Затем переводы обрабатываются, как обычно, посредством записей в файлах в папке i18n, например:
'code.not_empty' => 'Please enter your invitation code!',
Конечно, адаптируйте вышеизложенное для ваших пользовательских правил проверки.
Вы можете установить сообщение об ошибке по умолчанию для каждого правила проверки в application/messages/validate.php:
<?php
return array(
'not_empty' => 'Field is empty',
'Custom_Class::custom_method' => 'Some error'
);
Это вернет сообщение "Поле пусто" для следующего примера:
$post_values = array('title'=>'');
$validation = Validate::factory($post_values)
->rules('title', array(
'not_empty'=>NULL) );
if($validation->check()){
// save validated values
$post = ORM::factory('post');
$post->values($validation);
$post->save();
}
else{
$errors = $validation->errors(true);
}
Вы также можете изменить поведение класса Validate по умолчанию, расширив его в application/classes/validate.php:
class Validate extends Kohana_Validate
{
public function errors($file = NULL, $translate = TRUE)
{
// default behavior
if($file){
return parent::errors($file, $translate);
}
// Custom behaviour
// Create a new message list
$messages = array();
foreach ($this->_errors as $field => $set)
{
// search somewhere for your message
list($error, $params) = $set;
$message = Kohana::message($file, "{$field}.{$error}");
}
$messages[$field] = $message;
}
return $messages;
}