laravel blade @lang()本地化中的多个?

时间:2018-09-03 10:18:29

标签: php laravel localization laravel-blade pluralize

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)

感觉是mee的逻辑语法,但这只会给我一个关于输入参数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])

3 个答案:

答案 0 :(得分:4)

为此有一个@choice刀片指令。

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

答案 1 :(得分:1)

您必须在一个翻译文件(例如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

答案 2 :(得分:1)

您可以将它与这样的变量一起使用

//plurals.php
'day' => 'one day| :n days',

您可以在刀片文件中执行此操作:

{{ trans_choice('plurals.day', $course->days), ['n' => $course->days] }} 

你甚至可以使用这个

{{ trans_choice('plurals.like', $post->likes), ['n' => $post->likes] }} 
'like' => '{0} Nobody likes this|[1,19] :n users like this|[20,*] Many users like this'