バリデーションを日本語に変えるにはいくつかの手続きを踏まねばなりません。
1,日本語設定に変更
config/application.rbに以下の記述を追加。
config.i18n.default_locale = :ja
(略)
module BandStarter36553
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
config.load_defaults 6.0
config.i18n.default_locale = :ja
# Settings in config/environments/* take precedence over those specified here.
# Application configuration can go into files in config/initializers
# -- all .rb files in that directory are automatically loaded after loading
# the framework and any gems in your application.
end
end
2, gem
gem 'rails-i18n'
をインストールします。
3, config/locales/devise.en.yml 作成
以上を経ても基本的な箇所しか日本語化されていないので、ymlファイルを作成し、以下の内容を丸ごとコピペします(一語一語の翻訳が記述されているよう)
devise.ja.yml
4, config/locales/ja.yml 作成
ほぼ 3の内容と同じですが、更に翻訳が必要なワード、主に自分で追加したカラムの日本語訳を一つ一つ設定していきます。
以下、開発中のオリジナルアプリ第一号より抜粋。
ja:
activerecord:
attributes:
user:
nickname: ニックネーム
active_day_id: 活動できる日
genre_id: ジャンル
leader_or_member_id: 募集希望または加入希望
prefecture_id: 居住都道府県
sex_id: 性別
skill_id: 演奏力の目安
what_play_id: 演奏パート
character_id: 性格
注意点として
・ attributes: の下はモデル名(ここではuser.rbのバリデーションに関するので、:userと記述)
・ モデル名より下は、バリデーションのカラム名。アソシエーションのあるカラムは _id までの記述が必要
・ エラーメッセージが日本語化しているので、それに伴い単体テストの内容を合わせる必要がある
なお関係ないですが、エラーメッセージの表示順は、モデル.rbのバリデーションに記述したカラムの順に表示されるようです。formの項目の順序に合わせて、バリデーションを記述するのがベターなよう。
以上です。
お読みくださりありがとうございました!