アプリケーションのエラーメッセージを日本語化しよう

1 min read読了の目安(約1400字

みなさん、あけましておめでとうございます!
本年もよろしくおねがいします!

自分用の記録として始めたZENNも今年も緩やかに投稿していくのでよろしくおねがいします!

今日は、ログインや新規登録のときに入力に不備があるとエラー文を英語で表記してくれているのを、日本語に表記する方法を書きます!

はじめに

Rspecは導入済み、FactoryBotも記入済み、単体テストコードも記入済みの状態で、エラー文表記を日本語に変えるだけというシチュエーションで

エラー文の日本語化

application.rbを編集して、言語設定を変更

config/application.rb

# 中略
module アプリ名
 class Application < Rails::Application
   # Initialize configuration defaults for originally generated Rails version.
   config.load_defaults 6.0

   # 日本語の言語設定
   config.i18n.default_locale = :ja
  # 省略
 end
end

Gemfileを編集、編集後bundle install,サーバーの再起動

gem 'rails-i18n'

日本語化用のファイルを作成

エラーメッセージを全て日本語にするためには、もう一つファイルを用意する必要がある。
そのファイルのことをlocaleファイルと言う。
localeファイルの中に日本語化用のファイルを作成することで、英語を日本語に翻訳してくれ、その日本語へ翻訳するためのファイルは、通常YAMLというファイル形式を用いる。

config/localesディレクトリに、devise.ja.ymlというファイルを作成する
その中に、devise.ja.ymlからコピーしてまるごと貼り付ける
※インデントに注意

https://github.com/tigrish/devise-i18n/blob/master/rails/locales/ja.yml

これでもある程度は日本語になるが、例えばnickname、text,imageなどは翻訳されていないので、こちら側で翻訳して日本語に変換する必要がある
config/locales/ja.yml

ja:
 activerecord:
   attributes:
     user:
       nickname: ニックネーム
     tweet:
       text: テキスト
       image: 画像

エラー文を書き換える

現状の単体テストコードは英語表記のエラー文なので、日本語に書き換える
方法は
1.binding.pryで止める
2.@user.varid?でfalseか確認
3.@user.errors.full_messagesでエラー文を確認

ちなみに大野が作っているアプリではこんな感じになります。

https://gyazo.com/cf8fae75429130099b73535a328747d2

分かりやすいかは別として、日本語のほうが見やすいよね!

今日はここまで!

ありがとうございました!