アプリケーションのエラーメッセージを日本語化しよう
みなさん、あけましておめでとうございます!
本年もよろしくおねがいします!
自分用の記録として始めた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からコピーしてまるごと貼り付ける
※インデントに注意
これでもある程度は日本語になるが、例えば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でエラー文を確認
ちなみに大野が作っているアプリではこんな感じになります。
分かりやすいかは別として、日本語のほうが見やすいよね!
今日はここまで!
ありがとうございました!
Discussion