Как я могу использовать теги HTML в файле локализации Laravel?

Я пытаюсь использовать функцию локализации Laravel, но мне нужно уметь выделить или выделить часть фразы. Вставка тега HTML в языковой файл приводит к его экранированию при выводе на блейд.

Например, вот моя запись в языковом файле:

return [
    'nav' => [
        'find' => '<strong>Find</strong> Your Home',
    ]
];

Когда я называю это изнутри лезвием: (Я также пытался использовать тройные скобки.)

{{ trans('base.nav.find') }}

Это выводит:

&lt;strong&gt;Find&lt;/strong&gt; Your Home

Я мог бы потенциально разделить фразу так:

return [
    'nav' => [
        'fyh' => [
            'find' => 'Find',
            'yh'   => 'Your Home',
        ]
    ]
]

И затем вывод:

<strong>{{ trans('base.nav.fyh.find') }}</strong>{{ trans('base.nav.fyh.yh') }}

Но это кажется излишним. Есть ли лучшие решения?

2 ответа

Решение

Использование {!! !!} вместо {{ }} чтобы избежать побега:

{!! trans('nav.find') !!}

С помощью @lang директива:

@lang('nav.find')

Источник: получение строк перевода

Используя Laravel 5.6 и выше, можете использовать __ помощник вместе с синтаксисом лезвия:

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

Пришлось сделать это для шаблонов лезвия нумерации страниц.

Другие вопросы по тегам