我希望某些翻译具有不同的值,具体取决于环境。
Rails.env.test? && I18n.t('foo') # => 'A value'
Rails.env.development? && I18n.t('foo') # => 'A different value'
为了实现这一目标,我可以设想一些方法:
I18n.set('foo', 'bar') if Rails.env.test?
但是,我无法找到任何可以使用的解决方案。
有吗?
答案 0 :(得分:1)
我认为你需要这样的东西:
en.production.yml
:
en:
production:
foo: "Foo"
bar: "Bar"
en.development.yml
:
en:
development:
foo: "foo"
bar: "bar"
en.test.yml
:
en:
test:
foo: "-foo-"
bar: "-bar-"
并使用视图和控制器:
I18n.t("#{Rails.env}.foo")
I18n.t("#{Rails.env}.bar")
<小时/> 更新:
如果您只需要将变量替换为平移,请使用插值:
en.yml
:
en:
foo: "Foo %{variable}"
bar: "%{var} Bar"
并使用:
I18n.t('foo', :variable => 'Bar')
I18n.t('bar', :var => 'Foo')