Rai*_*ana 6 locale overriding ruby-on-rails rails-i18n ruby-on-rails-4
我想要I18n.translate()
或I18n.t()
使用特定的语言环境,但不是I18n.locale.我不想I18n.t(:my_key, locale: :my_locale)
每次都使用,所以如果我可以覆盖函数本身就会很棒.
我试着把它放在一个新的帮手中:
# my_helper.rb
module MyHelper
def translate(key, options = {})
options[:locale] = MY_LOCALE
I18n.translate key, options
end
alias :t :translate
end
Run Code Online (Sandbox Code Playgroud)
这适用于"硬键" t('word')
,但没有找到"动态键"的正确路径t('.title')
,这应该使用我的部分路径,即de.users.form.title
.
谢谢你的帮助!
似乎在以下功能之间存在一些混淆:
I18n.translate
,来自I18n宝石和 ActionView::Helpers::TranslationHelper#translate
,来自RailsI18n.translate
不执行"懒惰查找"(即将查找键的范围限定为当前的部分,如果它以点开头),这是您期望的.这是一个特点ActionView::Helpers::TranslationHelper#translate
,伴随着一些人.
你的方法是重写ActionView::Helpers::TranslationHelper#translate
,没有调用super
延迟加载.所以,如果你想继续覆盖这个方法,我想你可能想要:
# my_helper.rb
module MyHelper
def translate(key, options = {})
# If you don't want to ignore options[:locale] if it's passed in,
# change to options[:locale] ||= MY_LOCALE
options[:locale] = MY_LOCALE
super(key, options)
end
alias :t :translate
end
Run Code Online (Sandbox Code Playgroud)
就个人而言,我宁愿t(:my_key, locale: :my_locale)
每次都在我的视图中使用而没有覆盖,或者最多只有一个单独的帮助器方法,它包含一个ActionView::Helpers::TranslationHelper#translate
强制特定语言环境的额外业务逻辑的调用.
归档时间: |
|
查看次数: |
1894 次 |
最近记录: |