フラッシュメッセージが設定されているPetsControllerがあります。このようなもの:
_class PetsController
...
def treat_dog
#do somthing
flash[:success] = 'Your dog is being treated.'
end
...
end
_
このコントローラーはAdminに属しているため、_app/controllers/admin/pets_controller.rb
_にあります。 I18nを使用するので、コントローラーの文字列をt('controllers.admin.pet.treated')
に置き換え、次のymlを記述しました。
_en:
controllers:
admin:
pet:
treated: "Your dog is being treated."
_
:_config/locales/controllers/admin/pet/en.yml
_にあり、機能しませんでした。 _config/locales/controllers/admin/pets/en.yml
_、_config/locales/controllers/admin/en.yml
_ _config/locales/controllers/en.yml
_で見つけようとしましたが、どれも機能しませんでした。翻訳が見つかりません。
このコントローラーからの翻訳を使用するにはどうすればよいですか?
コントローラでは、このように使用します
I18n.t 'controllers.admin.pet.treated'
それをconfig/locales/en.yml
に入れると、機能するはずです(サーバーを再起動する必要があるかもしれません)。
このガイドは、I18nについて頭をクリアするのに役立つはずです。関連するセクションへのリンクを提供していますが、完全に読んでください: http://guides.rubyonrails.org/i18n.html#adding-translations
ネストされたファイルの使用を主張する場合は、それを有効にする必要があります。ドキュメントによると:
Railsのデフォルトのロケール読み込みメカニズムは、ここにあるように、ネストされた辞書にロケールファイルを読み込みません。したがって、これを機能させるには、Rails =さらに調べる:
# config/application.rb
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
def treat_dog
#do somthing
flash[:success] = t('controllers.admin.pet.treated')
end
コールバックでは、次のようになります。
add_breadcrumb proc{ I18n.t('home_page') }, :root_path