徒然なるままに

学習メモがメインです

Railsバリデーションエラーを日本語化する

Railsでmodelに指定したバリデーションを日本語としてエラーを表示したいと思います。

自分の環境

現状

エラーメッセージが英語で記載されています。 f:id:tagoaskubeya:20191002152354p:plain

対応内容

  • 以下のgemをインストール
gem 'rails-i18n'
  • application.rbに記述追加
  class Application < Rails::Application
   ...(略)
    config.i18n.default_locale = :ja
  end

  • config/locales/models/ja.ymlにフィールド名を日本語で記載する。
ja:
  activerecord:
    models:
      user: ユーザー
    attributes:
      user:
        name: ユーザー名
        password: パスワード
        password_confirmation: パスワード(再確認)

※モデル名はキャメルケースではなくスネークケースで単数形で記載する。

  • viewのlabel名を日本語ベタ書きにしていた場合、フィールド名にする。
    <%= f.label ”名前” %>ではなく<%= f.label :field_name %>とする。
<%= form_for(@user, url: yield(:url)) do |f| %>
  <%= render 'shared/error_messages', object: f.object %>

  <%= f.label :name %>
  <%= f.text_field :name, class: "form-control" %>

  <%= f.label "パスワード" %>
  <%= f.label :password %>
  <%= f.password_field :password, class: "form-control" %>

  <%= f.label "パスワード(再確認)" %>
  <%= f.label :password_confirmation %>
  <%= f.password_field :password_confirmation, class: "form-control" %>

  <%= f.submit yield(:button_text), class: "btn btn-primary" %>
<% end %>

結果

f:id:tagoaskubeya:20191002155131p:plain

参考にさせていただいたサイト

https://rails-study.net/to-ja/

https://qiita.com/Ushinji/items/242bfba84df7a5a67d5b

https://qiita.com/fukubaka0825/items/1b4410822090e7562a0a