phplaravellocalizationlaravel-bladepluralize

Pluralization in laravel blade @lang() localization?


Laravel 5 provides translations using the @lang helper

<!-- file: template.blade.php -->
@lang('some text')

Laravel 5 also has the possibility to pluralize strings depending on a variable.

// file: controller.php
echo trans_choice('messages.apples', 10);

The translation file would then contain the following line to translate apples:

// file: /resources/lang/en
'apples' => 'There is one apple|There are many apples',

Now, I would like to use pluralization inside a blade template and I cannot find out how to use this. I tried the following:

<!-- file: template.blade.php -->
Course duration: {{ $course.days }} @lang('day|days', $course.days)

which feels to be the logical syntax to me, but this only give me an error about input argument 2 needing to be an array. I also tried this:

<!-- file: template.blade.php -->
Course duration: {{ $course.days }} @lang('day|days', [$course.days])

And this:

<!-- file: template.blade.php -->
Course duration: {{ $course.days }} @lang(['day|days', $course.days])

Solution

  • There is a @choice blade directive for this.

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