国际化:将HAML中的变量传递给YAML(Rails)

时间:2013-12-29 16:00:34

标签: ruby-on-rails internationalization haml yaml

我在Rails / HAML / YAML中有国际化的语法问题,在连接字符串时将JavaScript(?)变量传递给yaml。

在国际化之前,HAML文件看起来像这样:

Dear {{order.name}},

我更改了它,以下工作正常 - 在en.yml

en:
  salutation: "Dear %{customer_name},"

并在HAML文件中:

= I18n.t('.salutation', customer_name: "Robert")

但是,我想从{{order.name}}中为其分配值,而不是“Robert”。以下不起作用:

= I18n.t('.salutation', customer_name: {{order.name}})
= I18n.t('.salutation', customer_name: order.name)
= I18n.t('.salutation', customer_name: @order.name)

将变量排除在yaml之外并使用{{variable}}语法在HAML中构建字符串的解决方法不方便,因为我们在不同的地方使用多个yaml项目并且将它们弄得一团糟字符串分开(特别是翻译文件)。

谢谢你,抱歉新手问题,但我在网上找不到任何东西......

2 个答案:

答案 0 :(得分:0)

我相信您需要插入要传递给I18n.t方法的字符串:

= I18n.t('.salutation', customer_name: "#{order.name}")

注意:我没有测试过这个,但我相信它会起作用。

答案 1 :(得分:0)

您需要将{{order.name}}作为字符串传递:

= I18n.t('.salutation', customer_name: '{{order.name}}')

这将按预期输出Dear {{order.name}}