Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在非标准Rails类中为I18n键设置前缀路径?_Ruby On Rails_Rails I18n - Fatal编程技术网

Ruby on rails 在非标准Rails类中为I18n键设置前缀路径?

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项目使用
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路径
部分)