👗
enumでエラーメッセージを日本語化にする
この記事で分かること
- モデル・カラムの日本語変換の実装方法
- エラー文(ja.errors.messages)の対処法
前提条件
- 投稿ページが実装済み
- enum_helpが実装済み
完成イメージ
-
Before
-
After
テーブル
実装手順
- モデル名・カラムを日本語化する
- エラー文から足らない翻訳箇所を見つける
実装方法
実装手順に沿って紹介します。
1.モデル名・カラムを日本語化する
エラー文を確認したときに、カラム名が日本語化されていないことが分かりました。
よって(ja.yml)から日本語訳を追加します。
locales/ja.yml
ja:
enums:
user:
position_status:
normal: "一般"
company: "企業"
certification_status:
unachieved: "未達"
achieved: "認証"
admin: "管理者"
range:
User: "ユーザー名"
Item: "商品名/会社名"
product:
active_status:
sale: "販売中"
limited_time_sale: "期間限定販売"
end_of_sale: "販売終了"
item:
status:
waiting: "対応待ち"
keep: "保留中"
finish: "対応済み"
activerecord:
errors:
messages:
record_invalid: 'バリデーションに失敗しました: %{errors}'
restrict_dependent_destroy:
has_one: "%{record}が存在しているので削除できません"
has_many: "%{record}が存在しているので削除できません"
+ models:
product: 商品
+ item: 投稿
attributes:
product:
id: 商品ID
name: 商品名
introduction: 紹介文
price: 値段
active_status: 販売ステータス
is_secret: 公開ステータス
genre: ジャンル
created_at: 登録日時
updated_at: 更新日時
image: 商品画像
+ item:
+ id: 投稿ID
+ title: 商品名
+ body: レビュー内容
+ company: 製造会社
+ area: 購入場所
+ star: 評価
+ status: ステータス
上記のようにモデル名とカラム名を日本語化します。
2. エラー文から足らない翻訳箇所を見つける
次に長文部分のエラーメッセージを確認します。
確認すると、後半に「ja.errors.messages.not_a_number」と表示されています。
これは「jaファイルのerrors/messages記述欄にnot_a_numberが書かれていないよ」と示されています。
よってjaファイルの必要箇所にnot_a_numberを記述します。
locales/ja.yml
# jaファイルを開いて
# (上部略)
errors: #errorsの
format: "%{attribute}%{message}"
messages: #messagesの
accepted: を受諾してください
blank: を入力してください
confirmation: と%{attribute}の入力が一致しません
empty: を入力してください
equal_to: は%{count}にしてください
even: は偶数にしてください
exclusion: は予約されています
greater_than: は%{count}より大きい値にしてください
greater_than_or_equal_to: は%{count}以上の値にしてください
in: は%{count}の範囲に含めてください
inclusion: は一覧にありません
invalid: は不正な値です
less_than: は%{count}より小さい値にしてください
less_than_or_equal_to: は%{count}以下の値にしてください
model_invalid: 'バリデーションに失敗しました: %{errors}'
+ not_a_number: は数値で入力してください #not_a_numberを追加
not_an_integer: は整数で入力してください
odd: は奇数にしてください
other_than: は%{count}以外の値にしてください
present: は入力しないでください
required: を入力してください
taken: はすでに存在します
too_long: は%{count}文字以内で入力してください
too_short: は%{count}文字以上で入力してください
wrong_length: は%{count}文字で入力してください
サンプルをコピペしたja.ymlだと必要に応じて、翻訳を増やす必要があると分かりました!
感想
モデル名の部分の日本語化はすぐにできたのですが、エラー文の方は苦戦しました。でもエラー文を落ち着いて読み解き対処すると解決してくれたので、改めてエラー文は重要だと思いました。
この記事をかいた人
23/6/1にDWCに入学し、主にRailsの学習に取り組みました。卒業が近づきこれから何で学習をするか悩んだときに、技術ブログをしようと考えました。初心者ですがよろしくお願いします。
Discussion