I18N键用于模块中分组的导轨型号

时间:2012-05-02 13:47:30

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 internationalization

我有几个模型分组在这样的模块中:

  #/app/models/blobs/small_text.rb
  class Blobs::SmallText < ActiveRecord::Base

        #.. class implementation

  end

我想用法语将人类名称设置为“Texte Court”:

  I18n.locale = "fr"
  Blobs::SmallText.model_name.human # should return "Texte Court" 

我遇到了类定义的模块部分以及它应该如何包含在语言环境文件中的问题。我在我的语言环境文件中尝试了几种组合但是没有用。以下是我尝试过的一些组合:


  # /config/locales/models/blobs.fr.yml

  # first attempt (does not work)
  fr:
    activerecord:
      models:
         blobs_small_text: "Texte Court"

  # /config/locales/models/blobs.fr.yml   
  # second attempt(does not work) 
  fr:
    activerecord:
      models:
         blobs:
           small_text: "Texte Court"

有什么想法吗? 谢谢 d。

1 个答案:

答案 0 :(得分:32)

确定。我发现了答案。当您不知道类密钥时,只需在rails控制台中运行以下指令:

 Blobs::SmallText.model_name.i18n_key  # this returns :"blobs/small_text"

现在我可以相应地更新我的语言环境文件:

# /config/locales/models/blobs.fr.yml
# last attempt (it works)
fr:
  activerecord:
    models:
       blobs/small_text: "Texte Court"

所以现在它有效。但是,它只是我或这个命名约定不尊重Ruby on Rails中的一般命名约定?