使用部分模板文件的i18n gem的麻烦

我正在使用Ruby on Rails 3.1,我想知道如何正确处理与部分模板文件相关的国际化。 那是, …

…在我的app/views/users/flag.html.erb文件中我有:

   "/users/flag_form" %> 

…在我的app/views/users/_flag_form.html.erb文件中我有:

  

如果在我的config/locales/views/users/en.yml文件中( 注意 :我正在组织官方RoR指南中所述的文件)我使用

 en: users: flag: test_key1: Test 1 text test_key2: Test 2 text 

Test 1 text显示在“主”模板app/views/users/flag.html.erb )中, Test 2 text不适用于部分模板app/views/users/_flag_form.html.erb ) 。 怎么可以\我应该解决这个问题,以便正确显示Test 2 text

一种方法是使用范围,而不是使用句号“延迟加载”。 像这样的东西应该工作:

 I18n.t :test_key2, :scope => 'users.flag' 

或使用:

 I18n.t "users.flag.test_key2" 

最后,您甚至可以将其传递给部分,如同

 <%= render :partial => "/users/flag_form", :locals => { :test_key => t('.test_key1') } %> 

您还应该查看本网站上的附录部分,因为它可能列出了我遗漏的内容: http : //www.unixgods.org/~tilo/Rails/where_is_Rails_trying_to_lookup_L10N_strings.html

配置/语言环境/ en.yml

 en: users: flag: test_key1: Test 1 text flag_form: test_key2: Test 2 text 

应用程序/视图/用户/ flag.html.erb

 <%= t('.test_key1') %> <%= render :partial => "/users/flag_form" %> 

应用程序/视图/用户/ _flag_form.html.erb

 <%= t('.test_key2') %> 

注意:

  1. 视图的Rails路径必须与符号的YAML路径匹配。 您需要在YAML文件中创建与视图名称匹配的条目。 省略尾随下划线,因为它是部分的。
  2. 阅读有关延迟查找的更多信息

我写了这个。 你怎么看待这件事?

 def translate_for_partials key, *args I18n.t("#{params[:controller].gsub('/', '.')}.#{params[:action]}.#{key}", *args) end 

制作这样的方法是不是很糟糕?