エラーメッセージの日本語化
はじめに
オリアプ制作の中で、エラーメッセージの日本語化を行ったので、忘れないよう載せておこうと思います。
ユーザーがきちんとフォーム入力を出来ていない際に、エラーメッセージが英語ではどこに不備があるかが分かりづらいのでは?と感じたため、日本語化を実装しようと思いました。
事前状況:ユーザー登録等にはdeviseを導入している / 単体エラーコードは記述済み
今回の流れとして、localeファイル内に日本語変換用yamlファイルを作成する事で英語を翻訳していく。
(localeファイル:多言語化用の言語ファイル)
1.gemの導入
1.エラーメッセージを日本語化するために『rails-i18n』というgemをGemfileに記述しbundle installする。
これは以下のリンク先に記述してある語句を日本語にしてくれるもの。
https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml
gem 'rails-i18n'
2.config/application.rb に config.i18n.default_locale = :ja を記述し、言語の設定を行う
module IdeaApp
class Application < Rails::Application
# 中略
config.i18n.default_locale = :ja
# 中略
end
end
2.devise関連の日本語化
ユーザー登録等にはdeviseを導入しているため、それに関連するものの日本語化を行う。
1.config/locales に devise.ja.yml を作成する。
→config / locales / devise.ja.yml
2.devise.ja.yml内に以下のリンク先に記述してあるコードをペーストする。
ペーストすることで、記述してある語句を日本語にする。
https://github.com/tigrish/devise-i18n/blob/master/rails/locales/ja.yml
3.指定した単語の日本語化
ここまでの実装で、rails-i18nやdevise.ja.ymlに記述してある語句に関しては日本語化出来ているが、そのほかの語句は以下の画像のように日本語化出来ていない。
そのため、こちらで語句(NicknameやTitle、Category)などを指定し、日本語に変換する必要がある。
1.config/locales に ja.yml を作成する
→config / locales / ja.yml
2. ja.yml に以下のように変換したい語句の変換前・変換後を記述する
ja:
activerecord:
attributes:
user: #Userモデル
nickname: ニックネーム
phone_number: 電話番号
first_name: 名前
last_name: 名字
first_name_kana: 名前カナ
last_name_kana: 名字カナ
idea: #Ideaモデル
title: アイデア名
idea: アイデアの内容
price: 価格
category_id: カテゴリー
errors:
messages:
other_than: 「--」以外を選択してください
4.日本語に変換後
5.補足:エラーコード修正
すでに単体テストコードを記述している場合は、期待するエラーメッセージも日本語に変換されるため、書き換えが必要になる。
例としてNicknameのエラーコードを記載する。
# 中略
context '新規登録がうまくいかないとき' do
it 'nicknameが空だと登録できない' do
@user.nickname = ''
@user.valid?
expect(@user.errors.full_messages).to include("Nickname can't be blank")
end
end
# 中略
# 中略
context '新規登録がうまくいかないとき' do
it 'nicknameが空だと登録できない' do
@user.nickname = ''
@user.valid?
expect(@user.errors.full_messages).to include("ニックネームを入力してください")
end
end
# 中略
最後に
英語が苦手な人にもエラーメッセージが読めるように実装することが出来ました。
今後も誰にでも使いやすいアプリを制作できるように意識していきたいです。
Author And Source
この問題について(エラーメッセージの日本語化), 我々は、より多くの情報をここで見つけました https://qiita.com/weeksmtwtfs737/items/1880130ae8a9be0fb722著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .