実装すること
- railsの標準言語を日本語に設定する。
- deviseの日本語化(エラーやメッセージが日本語に変わる。)
- モデル名に関しても日本語で表示する。
github: https://github.com/svenfuchs/rails-i18n
#完成版
[ログイン後のフラッシュメッセージ]
[投稿時のエラーメッセージ]
#環境
- Ruby : 2.6.3
- Rails : 5.2.5
前提
- devise機能実装済み。
- 投稿機能があれば、なお良い。(モデルに関しても日本語化するため)
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
手順
- configファイルへの記述
- gem 'rails-i18n'のインストール
- deviseの日本語化設定
- modelの日本語化設定
実装
###1. configファイルへの記述
configファイルにあるapplication.rbに下記を記述します。
config.i18n.default_locale = :ja
localeについては、こちらにて。
簡単にいうと、ソフトウェアの言語設定等を管理する場所。
つまり、そのデフォルトをja(japan)にします。と意味してます。
###2. gem 'rails-i18n'のインストール
まずは、gemをGemfileに記載します。
gem 'rails-i18n'
インストールします。
$ bundle install
現状がどうなったか確認してみましょう。
おそらく下記になっているかと思います。
[ログイン後のフラッシュメッセージ]
[投稿時のエラーメッセージ]
ログイン後のフラッシュメッセージが日本語化になっていて、
投稿時のエラーメッセージが日本語になっていると思います。
これは、投稿時のエラーメッセージは deviseではなくrails自体の機能であるためです。
先ほどapplication.rbでrailsの標準言語を変更したためです。
また、表示されている日本語は下記のファイルで既に設定してあります。
gemをインストールしたことで表示が変わりました。
ja.yml: https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml
残りは、**devise
とmodelのカラム名
**の日本語設定です。
###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を使用した実装方法もあります。
参考例として書いておきます。長いので略してあります。
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の日本語化設定が完了しました。
確認すると、無事変更されていました。
###4. modelの日本語化設定
最後ににmodelの日本語化設定です。
deviseと同様にファイルを作成します。今回は、**ja.yml
**と作成しましょう。
中身は、下記のように記述していきます。
ja:
activerecord:
models:
モデル名: 日本語
attributes:
モデル名:
カラム名: 日本語
カラム名: 日本語
最終的にはこの様になります。
入力の際には、全角スペースを入力しうない様に気をつけましょう。
ja:
activerecord:
models:
book: 本
attributes:
book:
title: タイトル
body: 詳細内容
確認してみましょう。日本語に変わっているかと思います。
補足
もし、2件のエラーが、、、、の部分が変わっていないのであれば、
viewで deviseのエラーメッセージを使っていないからだと思われます。
私はviewを参考例として載せておきます。
<%= render "devise/shared/error_messages", resource: @book %>
これで日本語化されるかと思います。
以上です。