LoginSignup
2
1

More than 1 year has passed since last update.

【Rails】rails+devise+errorの日本語化の手順(rails-i18n)

Last updated at Posted at 2021-05-19

実装すること

  • railsの標準言語を日本語に設定する。
  • deviseの日本語化(エラーやメッセージが日本語に変わる。)
  • モデル名に関しても日本語で表示する。

github: https://github.com/svenfuchs/rails-i18n

完成版

[ログイン後のフラッシュメッセージ]

スクリーンショット 2021-05-20 0.02.07.png

[投稿時のエラーメッセージ]

スクリーンショット 2021-05-20 0.49.42.png

環境

  • Ruby : 2.6.3
  • Rails : 5.2.5

前提

  • devise機能実装済み。
  • 投稿機能があれば、なお良い。(モデルに関しても日本語化するため)
schema.rb
ActiveRecord::Schema.define(version: 2021_03_08_102510) do
  create_table "users", force: :cascade do |t|
    t.string "email", default: "", null: false
    t.string "encrypted_password", default: "", null: false
    t.string "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.string "name"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["email"], name: "index_users_on_email", unique: true
    t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
  end

  create_table "books", force: :cascade do |t|
    t.text "title"
    t.string "image_id"
    t.text "body"
    t.integer "user_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

手順

  1. configファイルへの記述
  2. gem 'rails-i18n'のインストール
  3. deviseの日本語化設定
  4. modelの日本語化設定

実装

1. configファイルへの記述

configファイルにあるapplication.rbに下記を記述します。

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

localeについては、こちらにて。

簡単にいうと、ソフトウェアの言語設定等を管理する場所。

つまり、そのデフォルトをja(japan)にします。と意味してます。

2. gem 'rails-i18n'のインストール

まずは、gemをGemfileに記載します。

Gemfile
gem 'rails-i18n'

インストールします。

terminal
$ bundle install

現状がどうなったか確認してみましょう。
おそらく下記になっているかと思います。

[ログイン後のフラッシュメッセージ]

スクリーンショット 2021-05-19 23.26.13.png

[投稿時のエラーメッセージ]

スクリーンショット 2021-05-19 23.51.20.png

ログイン後のフラッシュメッセージが日本語化になっていて、
投稿時のエラーメッセージが日本語になっていると思います。

これは、投稿時のエラーメッセージは deviseではなくrails自体の機能であるためです。
先ほどapplication.rbでrailsの標準言語を変更したためです。

また、表示されている日本語は下記のファイルで既に設定してあります。
gemをインストールしたことで表示が変わりました。

ja.yml: https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml

残りは、devisemodelのカラム名の日本語設定です。

3. deviseの日本語化設定

まずは、 deviseの日本語化設定から。
最初にconfig/locales/にdevise.ja.ymlを作成しましょう。

次に、下記のURLから中身をコピーして貼り付けます。
devise-i18n: https://github.com/tigrish/devise-i18n/blob/master/rails/locales/ja.yml

※ 一応、gem devise-i18を使用した実装方法もあります。

参考例として書いておきます。長いので略してあります。

config/locales/devise.ja.yml
ja:
  activerecord:
    attributes:
      user:
        confirmation_sent_at: パスワード確認送信時刻
        confirmation_token: パスワード確認用トークン
        confirmed_at: パスワード確認時刻
        created_at: 作成日
        current_password: 現在のパスワード
        current_sign_in_at: 現在のログイン時刻
        current_sign_in_ip: 現在のログインIPアドレス
        email: Eメール

        ---省略---

        one: エラーが発生したため %{resource} は保存されませんでした。
        other: "%{count} 件のエラーが発生したため %{resource} は保存されませんでした。"

これにてdeviseの日本語化設定が完了しました。
確認すると、無事変更されていました。

スクリーンショット 2021-05-20 0.02.07.png

4. modelの日本語化設定

最後ににmodelの日本語化設定です。
deviseと同様にファイルを作成します。今回は、ja.ymlと作成しましょう。
中身は、下記のように記述していきます。

config/locales/ja.yml
ja:
  activerecord:
    models:
    モデル名: 日本語
    attributes:
      モデル名:
     カラム名: 日本語
     カラム名: 日本語

最終的にはこの様になります。
入力の際には、全角スペースを入力しうない様に気をつけましょう。

config/locales/ja.yml
ja:
  activerecord:
    models:
      book: 
    attributes:
       book:
         title: タイトル
         body: 詳細内容  

確認してみましょう。日本語に変わっているかと思います。

スクリーンショット 2021-05-20 0.49.42.png

補足

もし、2件のエラーが、、、、の部分が変わっていないのであれば、
viewで deviseのエラーメッセージを使っていないからだと思われます。

私はviewを参考例として載せておきます。

views/books/index.html.erb
<%= render "devise/shared/error_messages", resource: @book %>

これで日本語化されるかと思います。

以上です。

2
1
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
2
1