Laravel 5 предоставляет переводы с помощью помощника @lang
<!-- file: template.blade.php -->
@lang('some text')
Laravel 5 также имеет возможность множить строки в зависимости от переменной.
// file: controller.php
echo trans_choice('messages.apples', 10);
Файл перевода будет содержать следующую строку для перевода яблок:
// file: /resources/lang/en
'apples' => 'There is one apple|There are many apples',
Теперь я хотел бы использовать множественное число внутри шаблона лезвия, и я не могу понять, как это использовать. Я попробовал следующее:
<!-- file: template.blade.php -->
Course duration: {{ $course.days }} @lang('day|days', $course.days)
который кажется мне логическим синтаксисом, но это только дает мне ошибку о том, что входной аргумент 2 должен быть массивом. Я также попробовал это:
<!-- file: template.blade.php -->
Course duration: {{ $course.days }} @lang('day|days', [$course.days])
И это:
<!-- file: template.blade.php -->
Course duration: {{ $course.days }} @lang(['day|days', $course.days])
Eсть @choice
Директива лезвия для этого.
Course duration: {{ $course->days }} @choice('day|days', $course->days)
Вам придется зарегистрировать новую запись с ключом в одном из ваших файлов перевода, скажем, plurals.php
, Тогда правильным подходом будет:
//in plurals.php
//...
'day' => 'day|days',
//...
Затем вы можете получить запись как
{{trans_choice('plurals.day', $course->days)}} //assuming the arrow syntax is how you retrieve a property in php :P