【发布时间】:2012-08-07 10:25:57
【问题描述】:
在视图中考虑以下代码:
<%= 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 代码。
【问题讨论】:
-
不太好回答,因为它是 per-t() 调用:
t('action.item.confirm_deletion', :default => 'Are you sure you want to delete this thing?') -
谢谢!知道这种可能性总是好的。