Edited at

Railsのバリデーションエラーのメッセージの日本語化


修正履歴


  • 2018/10/07 Gemfileへの記述方法の修正(クオーテーションで囲む)


デフォルトのエラーメッセージ

通常Modelのバリデーションエラーのデフォルトメッセージは以下のように英語です。日本人にとっては、日本語で表示してくれた方が親切。

スクリーンショット 2018-01-04 15.42.18.png


エラーメッセージの日本語化

エラーメッセージの日本語化するには、rails-i18nというgemを使用します。Gemfileに以下の一文を追加して、bundle installをします。

gem 'rails-i18n'

次に、config/application.rbに以下の一文を追記します。これにより、サーバ再起動後にエラーメッセージが日本語化されていると思います。


config/application.rb

config.i18n.default_locale = :ja


スクリーンショット 2018-01-04 15.41.17.png

ただ、modelの属性名については英語のままになっています。


カラム名の日本語化

modelの属性名については、日本語変換用のymlファイルを作ってあげる必要があります。config/locales/models/に、ja.ymlというファイルを作成して、以下のようにカラム名と日本語の対応表を記述してあげます。


config/locales/models/ja.yml

ja:

activerecord:
models:
event: イベント
attributes:
event:
name: イベント名
place: 開催場所
content: イベント内容

最後に、config/application.rbにこのymlファイルの読み込む一文を追記してあげればOKです。これは、正規表現を使い、config/locales以下のディレクトリ内にある全てのymlファイルを読み込むように指示する一文となります。


config/application.rb

config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.yml').to_s]


最終的なエラーメッセージの表示は以下の通り。

スクリーンショット 2018-01-04 15.39.25.png


参考文献

Rails で I18n を使って日本語化