有没有办法用轨道引用yaml中的常量?

时间:2011-08-24 00:31:19

标签: ruby-on-rails ruby localization internationalization yaml

有没有办法让我的en.yml文件包含一个常量?

# en.yml
foo:
  bar:
    I love BAZ so much!

# initializers/constants.rb
BAZ = "stackoverflow.com"

I18n.t("foo.bar")
->  "I love stackoverflow.com so much!"

如果没有,有没有办法自我引用yaml文件?

foo:
  bar:
    I love *baz* so much!
baz:
  stackoverflow.com

I18n.t("foo.bar")
->  "I love stackoverflow.com so much!"

1 个答案:

答案 0 :(得分:7)

I18N字符串工具支持interpolation

I18n.t('foo.bar', :baz => 'stackoverflow.com')

然后在en.yml

foo:
  bar:
    I love %{baz} so much!

请不要尝试将%{default}%{scope}用作字符串中的变量,I18n.translate将其用于其他内容:

  

如果翻译使用:default:scope作为插值变量,则会引发I18n::ReservedInterpolationKey异常。

这一般不适用于YAML,但您的问题似乎是关于翻译文件。