在我看来,我有
<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文件中我可以添加新行吗?
答案 0 :(得分:10)
在邮件中使用{!! !!}
代替{{ }}
和<br/>
标记
<p>{!! trans('mission-vision-page.mission-description') !!}</p>
答案 1 :(得分:1)
添加自定义刀片指令,在App\Providers\AppServiceProvider.php
中添加:
\Blade::directive('lang2br', function ($expression) {
return "<?php echo nl2br(app('translator')->getFromJson({$expression})); ?>";
});
然后您可以使用类似lang
的指令:
@lang2br('something');
答案 2 :(得分:0)
如果碰巧使用了@lang
刀片指令,则可以使用以下代码自己覆盖帮助程序:
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 />
标签。