【问题标题】:Break lines in blade translation files刀片翻译文件中的断行
【发布时间】:2016-10-10 04:45:34
【问题描述】:

在我看来我有

<p>{{ trans('mission-vision-page.mission-description') }}</p>

我在我的语言文件中放置了一段文本,但我想保留新的行。我试过了:

1.

return ['mission-description' => 'line 1 <br /> line 2']

2.

return ['mission-description' => 'line 1 \n line 2']

3.

$newLine = '<br />';    
return ['mission-description' => 'line 1 ' . $newLine . ' line 2']

我知道可能有更好的方法来实现这一点,但是我可以在我的 en.php 文件中添加新行吗?

【问题讨论】:

    标签: php laravel blade


    【解决方案1】:

    在您的消息中使用{!! !!} 而不是{{ }} 和&lt;br/&gt; 标记

    <p>{!! trans('mission-vision-page.mission-description') !!}</p>
    

    【讨论】:

    【解决方案2】:

    如果您碰巧使用了@lang Blade 指令,您可以使用以下代码自己覆盖帮助器:

     Blade::directive('lang', function ($expression) {
        // @see Illuminate\View\Compilers\Concerns\CompilesTranslations.php::compileLang()
        if (is_null($expression)) {
            return '<?php $__env->startTranslation(); ?>';
        } elseif ($expression[1] === '[') {
            return "<?php \$__env->startTranslation{$expression}; ?>";
        }
    
        return "<?php echo nl2br(app('translator')->getFromJson({$expression})); ?>";
    });
    

    这基本上是 vendor 目录 (Illuminate\View\Compilers\Concerns\CompilesTranslations.php::compileLang()) 中帮助程序代码的副本,并在输出周围包裹了 nl2br。这会将任何换行符转换为 &lt;br /&gt; 标记。

    【讨论】:

      【解决方案3】:

      添加自定义刀片指令,在App\Providers\AppServiceProvider.php添加:

      \Blade::directive('lang2br', function ($expression) {
         return "<?php echo nl2br(app('translator')->getFromJson({$expression})); ?>";
      });
      

      然后你可以使用lang指令:

      @lang2br('something');
      

      【讨论】:

        猜你喜欢
        • 2022-06-12
        • 2013-11-22
        • 1970-01-01
        • 1970-01-01
        • 2016-01-07
        • 2020-02-06
        • 1970-01-01
        • 2021-06-30
        • 2011-11-28
        相关资源
        最近更新 更多