エラーメッセージが英文でそのまま「モデル名+エラー内容」で出力されてしまい、ユーザーにわかりやすいように日本語化する方法を教えていただき、公式ガイドを見つつ実装したので忘備録的にメモ。
i18n公式ガイド : https://railsguides.jp/i18n.html
元々のエラーメッセージ表示内容
transration missing ja.activereccord.errors.models.モデル名.カラム名
対処方法
i18nの設定が書かれたファイルがconfig/local/ja.ymlにあるので、ここのそのエラー内容に対応した場所に日本語表示を定義する。
例えば
activerecord.errors.models.model_name.model_culumn_name
というエラー表示であれば、
activerecord:
errors:
models:
model_name:
culumn_name: 「ここに新しく定義するメッセージを書く」
また、しっかり階層構造下に書かなくとも、
「activereccord-errors-messages直下に定義してもja.ymlさんはモデルカラム名」
に定義すると、モデル全体にエラーメッセージを適応してくれるため、その必要がある時はここに書いてもよいです。
以下は例です
activerecord:
errors:
messages:
culumn_name: 「ここに新しく定義するメッセージを書く」
※公式ガイド4.5.1 エラーメッセージのスコープ より
https://railsguides.jp/i18n.html#%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%AE%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%97
公式ガイドによると、ymlファイルに書かれているメッセージ内容を以下の順番で探してくれるみたいです。
| activerecord.errors.models.[model_name].attributes.[attribute_name] |
| activerecord.errors.models.[model_name] |
| activerecord.errors.messages |
| errors.attributes.[attribute_name] |
| errors.messages |