i18n rails 助手的惰性查找?
i18n rails lazy look-up from a helper?
我正在使用 I18n 延迟查找,例如t('.field') 与 Rails 4 并且从控制器和视图中,I18n 进行适当的查找。但这不是来自帮助者,我想知道是否有原因或解决方案?
似乎如果我创建一个辅助函数,比如 'help()',并从多个不同的视图调用它,我必须定义相同的 I18n 字符串两次(是的,我使用别名 ;-))。所以我需要同时定义
- (观看次数),view1.help.field ...和...
- (观看次数),view2.help.field
有什么好的方法可以避免这种情况?
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')) %>
我正在使用 I18n 延迟查找,例如t('.field') 与 Rails 4 并且从控制器和视图中,I18n 进行适当的查找。但这不是来自帮助者,我想知道是否有原因或解决方案?
似乎如果我创建一个辅助函数,比如 'help()',并从多个不同的视图调用它,我必须定义相同的 I18n 字符串两次(是的,我使用别名 ;-))。所以我需要同时定义
- (观看次数),view1.help.field ...和...
- (观看次数),view2.help.field
有什么好的方法可以避免这种情况?
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')) %>