Параметры в сообщениях локализации в Laravel
Пусть в нашем представлении выводится некоторое сообщение, содержащее переменную часть. Например, количество сообщений:
<p>
messages number is 5
</p>
Давайте вынесем это сообщение в файл локализации. Пока что просто запишем его целиком:
<?php
return [
'messages' => 'messages number is 5',
];
?>
Однако число в этом сообщении меняется в зависимости от количества сообщений. Это значит, что мы должны написать сообщение таким образом, чтобы число можно было передать как параметр.
Для этого в Laravel в сообщениях
локализации можно использовать
плейсхолдеры. Плейсхолдер начинается
с двоеточия, после которого следует
имя параметра. Давайте перепишем
наше сообщение, заменив число
на плейсхолдер :count:
<?php
return [
'messages' => 'messages number is :count',
];
?>
Теперь при вызове функции __
вторым параметром мы можем передать
массив, ключами которого будут имена
плейсхолдеров, а значениями - то,
что нужно подставить вместо них.
Давайте подставим число 5
вместо плейсхолдера :count:
<p>
{{ __('test.messages', ['count' => 5]) }}
</p>
В результате выполнения этого кода
в браузер выведется строка
'messages number is 5'.
Таким образом мы можем передавать
любые динамические данные
в сообщения локализации.
Вторым параметром функции __
передается ассоциативный массив,
где ключи соответствуют именам
плейсхолдеров в файле локализации,
а значения - это те данные, которые
будут подставлены на место плейсхолдеров.
Пусть из контроллера в представление передается переменная. Подставьте значение этой переменной в сообщение.
Пусть у вас есть две переменных: начало и конец диапазона. Сделайте сообщение, в которое будут подставлены эти две переменные.