i18n从帮手看看懒惰的查找?

时间:2015-12-14 09:07:07

标签: ruby-on-rails internationalization helper

我正在使用I18n懒惰查找,例如通过Rails 4以及来自控制器和视图的I(' .field'),I18n进行了适当的查找。但它并不是来自帮助者,我想知道是否有原因或解决方案?

似乎如果我创建一个辅助函数,比如说' help()',并从多个不同的视图调用它,我必须两次定义相同的I18n字符串(是的,我使用别名; - ))。所以我需要定义两个

  • (views),view1.help.field ...和...
  • (views),view2.help.field

有什么不好的方法可以避免这种情况吗?

1 个答案:

答案 0 :(得分:1)

I18n.t使用当前请求作为上下文。所以当你打电话时:

<%= t('.hello') %>

apps/views/users/show.html.erb开始,它将使用密钥users.show.hello。但是,在apps/views/pets/show.html.erb上,您已经注意到了翻译失踪。

如果您在视图或帮助器中调用它并不重要,因为它们都使用视图上下文。

如果您想避免这种情况,您只需明确说明翻译密钥:

<%= t('users.show.hello') %>

如果您想使用动态查找并回退到固定密钥,您可以这样做:

<%= t('.hello', default: t('users.show.hello')) %>