2014年1月24日金曜日

ActiveAdminでI18nを使用したときにエラー:ranslation missing: ja.devise.failure.already_authenticatedが発生する

ActiveAdminでI18nを使用して日本語化したときに、エラーのtranslation missing: ja.devise.failure.already_authenticatedが発生してしまいました。パスなどの指定に間違いは無く、何故こうなるのか分かりません。何度かリロードしてみると今度は正しく表示されました。ますます分かりません…。

パスなどソースの内容自体には誤りは無く、色々調べてみるとどうやらconfig/initializersの読み込み順序が間違っていたようです。Railsの仕様でconfig/initializersの中をソートし実行しているようで、active_admin.rbを先に実行してi18n.rbが続いて実行されため、active_admin.rbを実行した段階でtranslation missingになるみたいでした。そこで、以下のような解決をいたしました。

解決策

config以下のapplication.bにi18n.rbをリロードする処理を追加しました。こちらより引用させていただきました。
config.before_configuration do
  I18n.load_path += Dir[Rails.root.join('config', 'locales', '*.{rb,yml}').to_s]
  I18n.locale = :ja
  I18n.default_locale = :ja
  config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '*.{rb,yml}').to_s]
  config.i18n.locale = :ja
  # bypasses rails bug with i18n in production
  I18n.reload!
  config.i18n.reload!
end

config.i18n.locale = :ja
config.i18n.default_locale = :ja
以上でサーバーを起動した初期の状態でもエラーが発生しなくなりました。
  • この記事をシェアする

  • このエントリーをはてなブックマークに追加
  • このブログの更新をチェックする

  • follow us in feedly