【发布时间】:2011-03-29 11:56:10
【问题描述】:
我们正在构建一个应用程序,这是我们第一次使用 Rails 3,我们必须从一开始就构建 I18n。作为完美主义者,我们希望在视图中使用真正的排版:破折号、弯引号、省略号等。
这意味着在我们的 locales/xx.yml 文件中我们有两个选择:
- 内联使用真正的 UTF-8 字符。 应该可以工作,但很难输入,并且 让我害怕,因为数量 仍然顽皮的软件 要 unicode 的东西。
- 使用 HTML 字符实体 (’ —等等)。更容易打字, 并且可能更兼容 行为不端的软件。
我宁愿选择第二个选项,但是 Rails 3 中的自动转义使这成为问题,因为 YAML 中的 & 符号本身会自动转换为字符实体,从而导致浏览器中的“可见”&8217;s .
显然,这可以通过在字符串上使用 raw 来解决,即:
raw t('views.signup.organisation_details')
但我们并不乐意每次t 时都走全局raw-ing 的路线,因为这会让我们容易出错并产生XSS 漏洞。
我们可以选择性地raw 知道包含字符实体的字符串,但这很难扩展,而且感觉不对 - 此外,包含一种语言实体的字符串可能不包含另一种语言。
关于解决这个问题的聪明的 rails-y 方法有什么建议吗?还是我们注定要浪费排版、xss 漏洞、浪费时间或所有这些?
【问题讨论】:
-
这是个好问题。期待一个好的答案。
标签: html ruby-on-rails internationalization ruby-on-rails-3 xss