2015-06-12 7 views
23

Sto tentando di utilizzare la funzione di localizzazione di Laravel, ma ho bisogno di essere in grado di mettere enfasi o grassetto su una porzione di frase. L'inserimento di un tag HTML nel file della lingua fa sì che venga sfuggito quando viene emesso in un blade.Come posso utilizzare i tag HTML in un file di localizzazione Laravel?

Per esempio, qui è la mia voce del file di lingua:

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

Quando chiamo dal di dentro una lama: (. Ho provato con le parentesi graffe triple e)

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

Produce:

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

potrei potenzialmente dividere il fraseggio in su come:

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

E poi uscita:

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

ma che sembra eccessivo. Qualche soluzione migliore?

+0

La seconda opzione non è solo eccessivo, è rotto. Cosa dovrebbe fare un traduttore se nella propria lingua il verbo va alla fine della frase? È possibile posizionare stringhe tradotte vicine l'una all'altra in una pagina, ma generalmente non si desidera concatenarle per formare frasi o paragrafi. – bdsl

risposta

62

Uso {!! !!} invece di {{ }} per prevenire la fuga:

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

Ah, dannazione! Non sono sicuro di come ho trascurato questo. Grazie. Accetterò la risposta quando SO mi consente di farlo. –

+3

@MichaelIrigoyen Hai menzionato le triple parentesi, quindi volevo solo menzionare che il suo è uno dei cambiamenti tra L4 e L5. In L4, '{{}}' non è stato sottoposto a escape e '{{{}}}' è stato scappato. In L5, '{!! !!} 'non ha caratteri di escape e' {{}} 'è sfuggito. – patricus

+0

Grazie, il mio ultimo stint con Laravel era la versione 4, quindi ho perso quella modifica ora che sto lavorando con un'installazione pulita di 5.1 –

Problemi correlati