pat*_*ick 6 ruby yaml localization ruby-on-rails internationalization
有没有办法让我的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!"
Run Code Online (Sandbox Code Playgroud)
?
如果没有,有没有办法自我引用yaml文件?
foo:
bar:
I love *baz* so much!
baz:
stackoverflow.com
I18n.t("foo.bar")
-> "I love stackoverflow.com so much!"
Run Code Online (Sandbox Code Playgroud)
I18N字符串工具支持插值:
I18n.t('foo.bar', :baz => 'stackoverflow.com')
Run Code Online (Sandbox Code Playgroud)
然后在en.yml:
foo:
bar:
I love %{baz} so much!
Run Code Online (Sandbox Code Playgroud)
只是不要尝试在字符串中使用%{default}或%{scope}作为变量,I18n.translate将其用于其他事情:
如果翻译使用
:default或:scope作为插值变量,I18n::ReservedInterpolationKey则会引发异常.
这一般不适用于YAML,但您的问题似乎是关于翻译文件.