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


Railsのバリデーションエラーメッセージを日本語化する方法はすでにQiitaにいくつか上がっていますが、網羅的でなかったりするので、半分自分のメモ用に作成します。

バージョン情報

'rails', '~> 5.1.4'

Gemファイルの設定

Gemfileに下記を追記後、bundle install。

gem 'rails-i18n'

config/application.rbの設定

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

カラム名の日本語化

  • 日本語変換用のymlファイルを作成する。config/locales/models/に、ja.ymlというファイルを作成して、以下のようにカラム名と日本語の対応表を記述する。
  • activerecordとactivemodelで別々に記載。検証したいモデルが複数ある場合は、modelsにmodel名を記載し、attributesで日本語化したいカラムを記載。
config/locales/models/ja.yml
ja:
  activerecord:
    models:
      team: チーム
      user: 利用者
    attributes:
      team:
        name: 名前
        path: パス
      user:
        role: 役職
        name: 名前
        email: メールアドレス
  activemodel:
    models:
      request_form: 申請フォーム
    attributes:
      request_form:
        description: 申請理由

config/application.rbの設定

config/application.rbにこのymlファイルの読み込む一文を追記。

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

参考

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