Rails のエラーメッセージを日本語化した際、モデルの属性名だけ英語のアルファベット表記になってしまう。。。という状況に陥ったので、解決するまでの道のりを記録しておきます。
①辞書によるデフォルトメッセージを日本語に
config/initializers/配下に新しいファイルを作成(とりあえず locale.rb というファイル名にします)。下記のように記述。
I18n.config.available_locales = :ja
I18n.default_locale = :ja
②日本語の辞書ファイルを作成
config/locales/にja.ymlというファイルを作成。中に記述する内容を自分で書いてもいいのですが、すでに作成されたものがあるので、こちらをコピーするなりダウンロードするなりして保存します。
これで Rails サーバーを再起動。エラーが出るように、新規作成画面(空欄で登録しようとするとエラーになるバリデーションを設定済み)でわざと空欄のまま登録ボタンを押すと・・・
確かに日本語になりましたが・・・Task name, Detail, Deadline がアルファベット表記のままです。
タイトルにも書きましたが、これらはデフォルトの日本語表記というわけではなく、自分が命名したモデルの属性名なので別扱いなのです。これらを日本語にするためには別のファイルを準備しなければなりません。
③モデル属性を日本語に
今度は config/locales/ に モデルを日本語表にする辞書 "model.ja.yml" を作成。
ja:
activerecord:
models:
task: ブログ
user: ユーザー
attributes:
task:
task_name: タスク名
detail: 詳細
deadline: 期限
user:
title: タイトル
name: 名前
email: メールアドレス
current_password: 現在のパスワード
password: パスワード
password_confirmation: 確認用パスワード
remember_me: ログインを記憶
このようにモデル属性に対応する日本語を記述します。これでサーバーを立ち上げなおして、先ほどと同じやり方でエラーを出してみると・・・
モデル属性の部分も日本語になりました。