Использовать HTML внутри файла перевода Rails
У меня есть некоторые переводы в приложении Rails (config/locale/[en | de].yml), и я использую его в своих представлениях с <%=t "teasers.welcome" %>
. Пример:
teasers:
welcome: "<strong>Welcome</strong> to the Website ..."
В Rails 2.3.8 это работает отлично, с Rails 3, HTML экранируется и переводится на <
... Как я могу предотвратить эту форму этого перевода и использовать HTML в своих файлах перевода, например, в Rails 2.3. 8?
Ответы
Ответ 1
Я предполагаю, что, поскольку
<%= t("blah") %>
в rails 2.x, теперь эквивалентно выполнению
<%=h t("blah") %>
когда вы используете рельсы 3.
Из примечание к выпуску s:
Переключиться на экранирование XSS по умолчанию для рельсов.
Чтобы исправить это, и еще раз из примечаний к выпуску:
Вам больше не нужно вызывать h (string) для выхода из HTML-вывода, он по умолчанию во всех шаблонах. если ты хотите получить строку без вызова, вызвать сырец (строка).
Так что просто замените
<%= t("blah") %>
<%= raw t("blah") %>
Ответ 2
Кроме использования raw
, существует другой недокументированный (но официальный) способ сделать это.
Все ключи, заканчивающиеся на _html
, автоматически отображаются без сохранения.
Переименуйте ключ из
teasers:
welcome: "<strong>Welcome</strong> to the Website ..."
к
teasers:
welcome_html: "<strong>Welcome</strong> to the Website ..."