在 blade 个翻译文件中换行

Break lines in blade translation files

在我看来我有

<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 文件中添加新行吗?

在您的消息

中使用 {!! !!} 而不是 {{ }}<br/> 标签
<p>{!! trans('mission-vision-page.mission-description') !!}</p>

如果您碰巧使用了 @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。这会将任何换行符转换为 <br /> 标签。

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

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

然后你可以使用类似lang的指令:

@lang2br('something');