記事の内容
deviseを使ったユーザー管理機能のテストコードを書く中で、バリデーションのエラーメッセージを日本語にする方法を学んだので、備忘録として記録します。
環境
OS: macOS Catalina 10.15.6
Ruby: 2.6.5
Rails: 6.0.3.4
手順
①config/application.rbを編集
②gem 'rails-i18n' を導入
③config/localesに日本語用のYAMLを作成
①config/application.rbを編集
以下のように編集。
module アプリケーション名
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
config.load_defaults 6.0
config.i18n.default_locale = :ja # 言語の設定を日本語にする記述
# (省略)
end
end
②gem 'rails-i18n' を導入
- Gemfileに以下を記述
gem 'rails-i18n'
- ターミナルで
bundle install
を実行
③config/localesに日本語用のYAMLを作成
####deviseのデフォルトバリデーションの場合####
- config/localesにdevise.ja.ymlを作成
- 以下リンク先の記述を作成したファイルにペースト
https://github.com/tigrish/devise-i18n/blob/master/rails/locales/ja.yml
####任意に追加したカラムの場合####
- config/localesにja.ymlを作成
- 以下のような形でモデルとカラムの数に応じてファイルを編集
(インデントがズレるとうまく動かないようです。)
ja:
activerecord:
attributes:
モデル名:
カラム名: 表示させたい日本語訳
モデル名:
カラム名: 表示させたい日本語訳
カラム名: 表示させたい日本語訳
補足
devise.ja.ymlの内容についても、日本語訳の部分を適宜修正するとメッセージの表示がきれいになると思います。
また、モデル名.rb内でpresence:
のバリデーションを設定しているものについても、画像などの場合デフォルトのエラーメッセージと相性が悪いこともあるため、以下のようにメッセージを任意で設定しても良いと思います。
validates :image, presence: { message: 'を選択してください' }
# 'true'は入れない!
引き続き学習がんばります!