12

我有几个型号的模块中分组如下:国际化的关键

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

     #.. class implementation 

    end 

我想人类的类名在法国设置为“Texte苑”:

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.

回答

27

好的。我的事情我找到了答案。所以,现在它的工作原理

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

:当你不知道刚才在轨道运行的类键控制台下面的指令:

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

现在我可以相应地更新我的语言文件。但是,它只是我还是这个命名约定不尊重Ruby on Rails中的一般命名约定?

+4

调用'i18n_key'是一个很棒的技巧。我会为blobs/small_text命名空间打开一张票据,当然这应该是blobs.small_text – tigrish