Rails

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に以下の一文を追記します。これにより、サーバ再起動後にエラーメッセージが日本語化されていると思います。しかし、modelのカラム名については英語のままになっています。

config/application.rb
config.i18n.default_locale = :ja

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

カラム名の日本語化

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 を使って日本語化