Рассмотрим следующий код в представлении:
<%= link_to 'Delete!', item , :confirm => t('action.item.confirm_deletion'), :method => :delete %>
Обычно это будет выглядеть так:
<a href="/items/123" data-confirm="Confirm deletion?" data-method="delete" rel="nofollow">Delete!</a>
Но если перевод для action.item.confirm_deletion по какой-то причине отсутствует (неполный yml-файл, опечатки и т. д.), получается:
<a href="/items/123" data-confirm="<span class="translation_missing" title="translation missing: sv.action.item.confirm_deletion">Confirm Deletion</span>" data-method="delete" rel="nofollow">Delete!</a>
который является недопустимым html, и пользователь увидит неработающие html-теги на главной странице. В некоторых случаях это также может быть угрозой безопасности.
Я знаю, что мог бы применить некоторое экранирование при каждом вызове функции I18n.t, но это кажется излишне повторяющимся для задачи.
Итак, мой вопрос: есть ли способ сделать так, чтобы сообщения «отсутствовал перевод» не содержали html-код.
t('action.item.confirm_deletion', :default => 'Are you sure you want to delete this thing?')
- person Zabba   schedule 07.08.2012