i18n в Ruby on Rails, <и> заменяется на>;<;когда не предназначен - PullRequest
6 голосов
/ 21 октября 2010

Я создаю файлы локали для интернационализации в приложении rails, и у меня есть URL-адрес, который я хочу перевести с включенными тегами, например

html.erb

<% =t (foo.bar.xxxx)%>

файл yml

foo: bar: xxxx: "xxxx"

результат

<; a href = "/info/index.html">; xxxx

Ответы [ 2 ]

28 голосов
/ 21 октября 2010

Ваши HTML-ключи YAML должны иметь суффикс _html:

foo:
  bar:
    xxxx_html: "<strong>Some HTML Here</strong>"

Выполнение этого Rails пометит строку как html_safe и отобразит HTML вместо преобразования его в &gt; и &lt;.

Вам также необходимо указать полное имя ключа, Rails не видит автоматически суффикс _html при вызове xxxx.

<%= t 'foo.bar.xxxx_html' %>
2 голосов
/ 21 октября 2010

Rails предотвращает инъекционные атаки, предотвращая отображение данных модели как фактической разметки.Функция raw предотвращает это преобразование.

Работает ли

<%= raw t(foo.bar.xxxx) %> 

?

...