16

次のようなモジュールにグループ化されたいくつかのモデルがあります。

  #/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"

何か案は?ありがとう。

4

1 に答える 1

40

Ok。私は答えを見つけたと思います。クラスキーがわからない場合は、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の一般的な命名規則を尊重していませんか?

于 2012-05-02T13:57:09.577 に答える