如何在Laravel本地化文件中使用HTML标记?

Mic*_*yen 43 php laravel blade laravel-localization

我正在尝试使用Laravel的本地化功能,但我需要能够强调或强化一个短语的一部分.将HTML标记插入语言文件会导致在输出到刀片时将其转义.

例如,这是我的语言文件条目:

return [
    'nav' => [
        'find' => '<strong>Find</strong> Your Home',
    ]
];
Run Code Online (Sandbox Code Playgroud)

当我从刀片中调用它时:( 我也试过使用三重括号.)

{{ trans('base.nav.find') }}
Run Code Online (Sandbox Code Playgroud)

它输出:

&lt;strong&gt;Find&lt;/strong&gt; Your Home
Run Code Online (Sandbox Code Playgroud)

我可能会将措辞分成如下:

return [
    'nav' => [
        'fyh' => [
            'find' => 'Find',
            'yh'   => 'Your Home',
        ]
    ]
]
Run Code Online (Sandbox Code Playgroud)

然后输出:

<strong>{{ trans('base.nav.fyh.find') }}</strong>{{ trans('base.nav.fyh.yh') }}
Run Code Online (Sandbox Code Playgroud)

但这似乎有点矫枉过正.更好的解决方案?

Lim*_*nte 104

使用{!! !!}而不是{{ }}防止转义:

{!! trans('nav.find') !!}
Run Code Online (Sandbox Code Playgroud)

  • @MichaelIrigoyen你提到过三重支撑,所以我只想提一下他是L4和L5之间的变化之一.在L4中,`{{}}`未转义,`{{{}}}`被转义.在L5中,`{!! !!}`未转义,`{{}}`被转义. (4认同)

小智 7

使用 Laravel 5.6 及更高版本,可以使用__helper 和刀片语法:

{!! __('pagination.next') !!}

必须为分页刀片模板做这些。


San*_*ega 5

使用@lang指令:

@lang('nav.find')
Run Code Online (Sandbox Code Playgroud)

来源:检索翻译字符串