【问题标题】:Pluralization in laravel blade @lang() localization?laravel Blade @lang() 本地化中的多元化?
【发布时间】:2019-02-08 09:22:34
【问题描述】:

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

【问题讨论】:

    标签: php laravel localization laravel-blade pluralize


    【解决方案1】:

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

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

    【讨论】:

    • 默认包含吗?我认为这样的东西会很有用,但从未在文档中找到它......
    • 这很好用。我将它与 D. Petrov 的答案结合起来。 @choice('plurals.days', $course-&gt;days)
    • 如果您可以在两种翻译之间进行选择会很有趣;)
    • 在 Laravel 7 上,使用我使用的 resources/lang/lang.json:@choice('day',2) 并且这个选择意味着在管道之后获取字符串,因此它显示 'days'翻译语言
    • Laravel 8.69.0, @choice 指令不起作用?总是在管道之前返回第一个参数,知道吗??
    【解决方案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
    

    【讨论】:

      【解决方案3】:

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

      //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'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-14
        • 1970-01-01
        • 2019-08-29
        • 1970-01-01
        • 2018-08-18
        • 1970-01-01
        • 2020-11-14
        相关资源
        最近更新 更多