我正在使用I18n懒惰查找,例如通过Rails 4以及来自控制器和视图的I(' .field'),I18n进行了适当的查找。但它并不是来自帮助者,我想知道是否有原因或解决方案?
似乎如果我创建一个辅助函数,比如说' help()',并从多个不同的视图调用它,我必须两次定义相同的I18n字符串(是的,我使用别名; - ))。所以我需要定义两个
有什么不好的方法可以避免这种情况吗?
答案 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')) %>