Плюрализация в локализации laravel blade @lang ()?

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])

0

Решение

Eсть @choice Директива лезвия для этого.

Course duration: {{ $course->days }} @choice('day|days', $course->days)
2

Другие решения

Вам придется зарегистрировать новую запись с ключом в одном из ваших файлов перевода, скажем, 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
1

По вопросам рекламы [email protected]