0
0

More than 3 years have passed since last update.

【バリデーション】エラーメッセージの日本語変換

Posted at

目的

入力をさせる際のバリデーションに引っ掛かった時のエラーメッセージを日本語化し、
見やすく、理解しやすくすること。
またformオブジェクトを使用している場合、うまく反映されなかったのでその場合の記述方法を忘れないため。

手順

gem 'rails-i18n'を追加

config/application.rbにconfig.i18n.default_locale = :jaの記述追加により言語設定を日本語に指定

この時点で再起動、bundle install後、デフォルトで設定されているcan't be blankなどは
既に日本語に変換されている。
しかしそれ以外の設定されたカラム名やエラーメッセージには対応していないので以下を行う。

まずdeviseに対してのパターン
localeの直下にdevise.ja.ymlというファイルを作成し以下のサイトからコピペ
devise.ja.yml(https://github.com/tigrish/devise-i18n/blob/master/rails/locales/ja.yml)

ここまで導入してもまだ変換されないカラム名などがあるので
同様の場所にja.ymlを作成

ja:
# gemでカバーできない変換を記述
 activerecord:
   attributes:
     user:
       nickname:           ニックネーム
       first_name:         お名前()
       last_name:          お名前()
       birthday:           生年月日
     item:
       name:               商品名
       image:              画像
 activemodel:
   attributes:
      order_address:
    #  formオブジェクト使用しているのでactivemodelで指定
       city:               市区町村
       house_number:       番地
       post_code:          郵便番号
       phone_number:       電話番号
       prefecture_id:      都道府県

このような形式で記述、インデントの位置関係で何を表すか決められているので正確にインデントは行う。
初めformオブジェクトを使用したモデルに関しても同様に記述しなぜ適用されないかがわからなかったが
activerecord:の部分をactivemodel:と変えて指定することで改善できた。
この変更によりテストコードの見直しも必要になるのでそちらも併せて行う。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0