Laravel: переводить сообщения проверки в закрытие - PullRequest
0 голосов
/ 31 октября 2019

Я использую класс HTTP-запросов Laravel для проверки некоторых данных формы. Для некоторых полей мне потребовалось закрытие, чтобы выполнить пользовательскую проверку.

Поскольку мое приложение имеет две локализации (английскую и немецкую), мне нужно перевести сообщения об ошибках, если проверка не удалась, что я уже сделал.

Единственной проблемой, с которой я столкнулся, было сообщение $fail() в закрытии.

Вот как я могу перевести сообщение в зависимости от текущей локализации в закрытии:

if (app()->getLocale() == 'en') {
   $fail('Please choose a name for "' .$value. '" in order to continue.');
} 
elseif (app()->getLocale() == 'de') {
   $fail('Bitte wählen Sie einen Namen für "' .$value. '" um fortzufahren.');
}

Я знаю, что могу использовать en.json -файл, который я использую для перевода всего сайта, но я не смог бы использовать $value внутри предложения.

Iмне интересно, есть ли лучший способ сделать это?

РЕДАКТИРОВАТЬ

Поскольку я использую замыкание, я должен написать немецкое сообщение об ошибке «по умолчанию» внутри замыкания, например:

$fail('Bitte wählen Sie einen Namen für "' .$value. '" um fortzufahren.');

Делая это так, я получаю значение $value внутри сообщения об ошибке, которое отображается в виде:

@if ($errors->has('person.*.name'))
   <label class="error-small">@lang($errors->first('person.*.name'))</label>
@endif

Таким образом, переменная $value будет вставлена ​​в сообщение,поэтому я больше не могу получить доступ к переменной через файл перевода json ..

1 Ответ

0 голосов
/ 31 октября 2019

А почему вы не можете передать параметр?

Взгляните на документацию .

Примерно так:

messages.php

'chose_name' => 'Please choose a name for :name in order to continue.'
__('messages.chose_name', ['name' => $value])

- РЕДАКТИРОВАТЬ

Для JSON

__('Please choose a name for :name in order to continue.', ['name' => $value])

Вы пробовали это:

de.json

{"Please choose a name for :name in order to continue.": "Bitte wählen Sie einen Namen für :name um fortzufahren."}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...