Мне нужно перевести Laravel ошибки проверки по умолчанию в JSON файлах. Проблема в том, что если я хочу перезаписать перевод, например, «требуемая» ошибка проверки в файле resourses / lang / de. json, он не работает.
Причина, по которой я должен это сделать, - система переводчиков фраз, которую я использую.
Есть идеи? Спасибо!
ОБНОВЛЕНИЕ
После некоторых исследований я теперь вижу, в чем заключается моя «проблема». Laravel с использованием функции trans () для перевода ошибок валидации, но если вы хотите использовать Laravel JSON translation, то вы должны использовать функцию __ (). Окей, я знаю, почему они так поступают, потому что ошибки валидации структурированы по «коротким ключам» и отформатированному переводу JSON, если использовать строки в качестве ключей. Но что, если я все еще хочу перевести ошибки по умолчанию в JSONi sh (я знаю, что это слово futuristi c)? Следуйте моему решению здесь:
Прежде всего вы должны создать запрос формы (https://laravel.com/docs/7.x/validation#creating -form-запросы ):
php artisan make:request UserUpdateRequest
Во вновь созданном Файл запроса формы. Вы должны перезаписать функцию сообщений, чтобы иметь возможность переводить ошибки проверки:
namespace App\Http\Requests\v1;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
use App\Exceptions\ApiValidationException;
class UserUpdateRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => ['required', 'string', 'min:3', 'max:255'],
];
}
/**
* Get custom messages for validator errors.
*
* @return array
*/
public function messages()
{
return [
'name.required' => __('The user name is required.'),
'name.string' => __('The user name must be a string.'),
'name.min' => __('The user name must be at least three characters.'),
'name.max' => __('The user name may not be greater than 255 characters.'),
];
}
}
Теперь нам нужно создать файлы переводов (https://laravel.com/docs/7.x/localization#using -translation-strings-as- ключи ) и вставьте в них новые строки перевода.
# resourses/lang/de.json
{
"The user name is required." : "The user name is required.",
"The user name must be a string." : "The user name must be a string.",
"The user name must be at least three characters." : "The user name must be at least three characters.",
"The user name may not be greater than 255 characters." : "The user name may not be greater than 255 characters."
}
И это все. Надеюсь, это описание процесса перевода будет полезно кому-то еще.