html - multi - rails translation interpolation
Usar HTML dentro de un archivo de traducción de Rails (2)
Tengo algunas traducciones en mi aplicación Rails (config / locale / [en | de] .yml) y las uso en mis vistas con <%=t "teasers.welcome" %>
. Ejemplo:
teasers:
welcome: "<strong>Welcome</strong> to the Website ..."
En Rails 2.3.8 esto funciona bien, con Rails 3, el HTML se escapa y se traduce a <
... ¿Cómo puedo evitar esta forma esta traducción y usar HTML en mis archivos de traducción como en Rails 2.3.8?
Aparte de usar en raw
, hay otra forma indocumentada (pero oficial) de hacerlo. Todas las claves que terminan con _html
se vuelven automáticamente sin escapar.
Renombrar la clave de
teasers:
welcome: "<strong>Welcome</strong> to the Website ..."
a
teasers:
welcome_html: "<strong>Welcome</strong> to the Website ..."
Supongo que es porque hacer
<%= t("blah") %>
En los carriles 2.x, ahora es el equivalente a hacer.
<%=h t("blah") %>
cuando estás usando rieles 3.
De la nota de lanzamiento s:
Cambie a XSS de escape por defecto para los rieles.
Para arreglar esto, y una vez más desde las notas de la versión:
Ya no necesita llamar a h (cadena) para escapar de la salida HTML, está activada de forma predeterminada en todas las plantillas de vista. Si desea la cadena sin escapar, llame a raw (cadena).
Así que solo reemplaza
<%= t("blah") %>
por
<%= raw t("blah") %>