web-dev-qa-db-ja.com

Rails)でコントローラーからI18nを使用する方法

フラッシュメッセージが設定されている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_で見つけようとしましたが、どれも機能しませんでした。翻訳が見つかりません。

このコントローラーからの翻訳を使用するにはどうすればよいですか?

13

コントローラでは、このように使用します

I18n.t 'controllers.admin.pet.treated'
16
Mahesh

それを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}')]
0
def treat_dog
    #do somthing
    flash[:success] = t('controllers.admin.pet.treated')
end
0
Pardeep Saini

コールバックでは、次のようになります。

add_breadcrumb proc{ I18n.t('home_page') }, :root_path
0
hlcs