Плюрализация в локализации laravel blade @lang ()? - PullRequest
0 голосов
/ 03 сентября 2018

Laravel 5 предоставляет переводы с помощью @lang helper

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

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

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

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

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