質問: :ja config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s] ``` [Gemfile] ``` gem 'devise-i18n' gem 'devise-i18n-views' ``` [config/locales/devise.views.ja.yml] 一部抜粋 ``` ja: activerecord: models: user: "ユーザ" ``` [config/locales/ja.yml] ``` ja: activerecord: models: user: "登録者情報" workshop: "ワークショップ" ``` 試したことは以下の通りです。 上記の設定でコンソールを立ち上げて workshop を読み込もうとすると読み込まれない。 [1] pry(main)> I18n.t('activerecord.models.workshop') => "translation missing: ja.activerecord.models.workshop" ユーザーの設定も異なる設定が表示される。 [2] pry(main)> I18n.t('activerecord.models') => {:user=>"ユーザ"} そこで devise.views.ja.yml を以下のように編集 ``` user: "ユーザ。。。。" ``` コンソールを立ち上げ直して [1] pry(main)> I18n.t('activerecord.models') => {:user=>"ユーザ。。。。"} ファイルが読み込まれ、設定が反映していることを確認 次に、config/locales/ja.yml を編集し、以下を追加 ``` ja: hello: everybody: "皆さん" ``` コンソールを立ち上げ直して [1] pry(main)> I18n.t(:hello) => {:everybody=>"皆さん"} ファイルが読み込まれていることを確認 config/locales/devise.views.ja.yml からactiverecord の記述を削除 コンソールを立ち上げ直して [1] pry(main)> I18n.t('activerecord.models') => {:user=>"ユーザ"} と削除したにもかかわらず、 devise.veiws.ja.yml の設定が反映さ、ja.yml の設定が反映されない そこで、activerecord の内容を確認すると [2] pry(main)> I18n.t('activerecord') => {:attributes=> {:user=> {:confirmation_sent_at=>"パスワード確認送信時刻", :confirmation_token=>"パスワード確認用トークン", :confirmed_at=>"パスワード確認時刻", :created_at=>"作成日", :current_password=>"現在のパスワード", :current_sign_in_at=>"現在のログイン時刻", :current_sign_in_ip=>"現在のログインIPアドレス", :email=>"メールアドレス", :encrypted_password=>"暗号化パスワード", :failed_attempts=>"失敗したログイン試行回数", :last_sign_in_at=>"最終ログイン時刻", :last_sign_in_ip=>"最終ログインIPアドレス", :locked_at=>"ロック時刻", :password=>"パスワード", :password_confirmation=>"確認用パスワード", :remember_created_at=>"ログイン記憶時刻", :remember_me=>"ログインを記憶", :reset_password_sent_at=>"パスワードリセット送信時刻", :reset_password_token=>"パスワードリセット用トークン", :sign_in_count=>"ログイン回数", :unconfirmed_email=>"未確認Eメール", :unlock_token=>"ロック解除用トークン", :updated_at=>"更新日"}}, :models=>{:user=>"ユーザ"}, :errors=>{:messages=>{:record_invalid=>"バリデーションに失敗しました: %{errors}", :restrict_dependent_destroy=>{:has_one=>"%{record}が存在しているので削除できません", :has_many=>"%{record}が存在しているので削除できません"}}}} となる。 Gemfile から gem 'devise-i18n' gem 'devise-i18n-views' を削除し bundle し直してからコンソールを立ち上げ直して実行しても結果は変わらず。 原因が分かるようでしたらご教授いただけると大変助かります。 宜しくお願い致します。
回答: 返信有難うございます。 この件に関しては自己解決しております。 私の認識が正しければ、ja.yml で同じ定義をすると最初の定義が破棄される、ことが原因だったようです。 日本語化に関して色々なところからファイルをダウンロードしたり、コピペしたりしていていつの間にか、ja.yml の最後に devise.views.ja.yml の内容をコピペしていたようです。。。 そのため、Gemfile から gem 'devise-i18n' gem 'devise-i18n-views' を削除し bundle し直しても結果が反映されず、ja.yml が ``` ja: activerecord: models: user: "登録者情報" workshop: "ワークショップ" ... ja: activerecord: models: user: "ユーザ" ``` のような記述になっていたため、最初の定義が破棄されていたようです。 お騒がせいたしました。