Help us understand the problem. What is going on with this article?

Railsのバリデーションエラーのメッセージの日本語化

修正履歴

  • 2018/10/07 Gemfileへの記述方法の修正(クオーテーションで囲む)

デフォルトのエラーメッセージ

通常Modelのバリデーションエラーのデフォルトメッセージは以下のように英語です。日本人にとっては、日本語で表示してくれた方が親切。

スクリーンショット 2018-01-04 15.42.18.png

エラーメッセージの日本語化

エラーメッセージの日本語化するには、rails-i18nというgemを使用します。Gemfileに以下の一文を追加して、bundle installをします。

gem 'rails-i18n'

次に、config/application.rbに以下の一文を追記します。これにより、サーバ再起動後にエラーメッセージが日本語化されていると思います。

config/application.rb
config.i18n.default_locale = :ja

スクリーンショット 2018-01-04 15.41.17.png

ただ、modelの属性名については英語のままになっています。

カラム名の日本語化

modelの属性名については、日本語変換用のymlファイルを作ってあげる必要があります。config/locales/models/に、ja.ymlというファイルを作成して、以下のようにカラム名と日本語の対応表を記述してあげます。

config/locales/models/ja.yml
ja:
  activerecord:
    models:
      event: イベント
    attributes:
      event:
        name: イベント名
        place: 開催場所
        content: イベント内容

最後に、config/application.rbにこのymlファイルの読み込む一文を追記してあげればOKです。これは、正規表現を使い、config/locales以下のディレクトリ内にある全てのymlファイルを読み込むように指示する一文となります。

config/application.rb
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.yml').to_s]

最終的なエラーメッセージの表示は以下の通り。

スクリーンショット 2018-01-04 15.39.25.png

参考文献

Rails で I18n を使って日本語化

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした