Как я могу перевести ошибки проверки по умолчанию Laravel в файл JSON? - PullRequest
1 голос
/ 01 мая 2020

Мне нужно перевести 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."
}

И это все. Надеюсь, это описание процесса перевода будет полезно кому-то еще.

1 Ответ

0 голосов
/ 06 мая 2020

Мне нужно перевести 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."
}

И это все. Надеюсь, это описание процесса перевода будет полезно кому-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...