i18n rails 助手的惰性查找?

i18n rails lazy look-up from a helper?

我正在使用 I18n 延迟查找,例如t('.field') 与 Rails 4 并且从控制器和视图中,I18n 进行适当的查找。但这不是来自帮助者,我想知道是否有原因或解决方案?

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

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

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')) %>