有没有办法用rails引用yaml中的常量?
Posted
技术标签:
【中文标题】有没有办法用rails引用yaml中的常量?【英文标题】:is there a way to reference a constant in a yaml with rails? 【发布时间】:2011-11-02 09:42:05 【问题描述】:有没有办法让我的 en.yml 文件包含一个常量?
# en.yml
foo:
bar:
I love BAZ so much!
# initializers/constants.rb
BAZ = "***.com"
I18n.t("foo.bar")
-> "I love ***.com so much!"
?
如果没有,有没有办法自引用yaml文件?
foo:
bar:
I love *baz* so much!
baz:
***.com
I18n.t("foo.bar")
-> "I love ***.com so much!"
【问题讨论】:
github.com/markbates/yamler 另见:***.com/questions/41620674/use-placeholders-in-yaml 【参考方案1】:I18N 字符串工具支持interpolation:
I18n.t('foo.bar', :baz => '***.com')
然后在en.yml
:
foo:
bar:
I love %baz so much!
只是不要尝试将%default
或%scope
用作字符串中的变量,I18n.translate
会将它们用于其他用途:
如果翻译使用
:default
或:scope
作为插值变量,则会引发I18n::ReservedInterpolationKey
异常。
这通常不适用于 YAML,但您的问题似乎专门针对翻译文件。
【讨论】:
我试着找到这个插值的东西,很高兴有链接。 嗯..好的。我希望有一种简单的方法可以自动插入值,而不必将它们作为参数提供给对 I18n.translate 的调用... @patrick:这会导致各种疯狂的非本地行为和奇怪的错误。太多的魔法是一件坏事。以上是关于有没有办法用rails引用yaml中的常量?的主要内容,如果未能解决你的问题,请参考以下文章