Ruby on rails 在非标准Rails类中为I18n键设置前缀路径?
矿山的一个Rails项目使用Ruby on rails 在非标准Rails类中为I18n键设置前缀路径?,ruby-on-rails,rails-i18n,Ruby On Rails,Rails I18n,矿山的一个Rails项目使用Rails-i18n进行本地化。从视图(ActionView)和控制器(ActionController)中,可以调用(I18n.)t方法从适当的语言环境YAML获取值 如果您以句点开始本地化键,如t(“.title”),Rails将使用名为的功能为您当前所在的文件添加前缀路径。因此,“.title”-键get是用户/show.html.erb文件中的前缀,将成为“users.show.title” 工作起来很有魅力,但现在我有两个既不是视图也不是控制器的类,我想从那
Rails-i18n
进行本地化。从视图(ActionView)和控制器(ActionController)中,可以调用(I18n.
)t
方法从适当的语言环境YAML获取值
如果您以句点开始本地化键,如t(“.title”)
,Rails将使用名为的功能为您当前所在的文件添加前缀路径。因此,“.title”
-键get是用户/show.html.erb
文件中的前缀,将成为“users.show.title”
工作起来很有魅力,但现在我有两个既不是视图也不是控制器的类,我想从那里使用t
-方法。调用I18n.t
效果很好,但是因为我的自定义类没有从任何Rails类继承,所以它没有前缀。我可以很容易地解决这个问题,但是我所有的解决方法看起来都很难看,我感觉在一个超类中有一个方法用于确定前缀,但是我在文档中找不到它
是否有一个(类-)方法可以覆盖,
I18n.t
用于延迟查找?我想如果它足够好,我就可以在我的自定义类场景中复制它:
def translate(*args)
key = args.first
if key.is_a?(String) && (key[0] == '.')
key = "#{ controller_path.tr('/', '.') }.#{ action_name }#{ key }"
args[0] = key
end
I18n.translate(*args)
end
alias :t :translate
(其中我将替换控制器\u路径
部分)