deviseメッセージの問題点
deviseのセットアップを無事に完了して、ユーザーの登録、ログイン機能を実装して使用した後に気になることの1つにエラーメッセージなどが全て英語であることがあると思われます。そこで今回はdeviseのメッセージを日本語化する手順を紹介していきたいと思います。
また今回はdeviseの日本語対応に限定しています。Railsの日本語化対応の記事ではありませんのでご注意下さい。
devise-i18n gemを使うかどうか
deviseにはdevise-i18nというdeviseのメッセージを日本語化してくれるgemが存在します。そのgemを使うという選択肢がもちろんあるとは思うのですが、結局のところ自分が作っているアプリケーションによってメッセージの内容なども変わって来るため、メッセージの日本語化にgemを導入してコードを大きくするよりは、今回は自分が作っているアプリケーションで必要になる範囲で、コンパクトに実装していくので十分だと思います。
日本語メッセージを設定するymlファイルを作成する
まずはconfig/localesの下にすでにdevise.en.ymlというdeviseの英語メッセージを設定しているファイルがあるので、そちらと同じ階層に同じようにdevise.ja.ymlファイルを作成します。今回はこちらのファイルに日本語のメッセージを設定していきたいと思います。始めにdevise.en.ymlの内容を全てdevise.ja.ymlコピーして編集すると、設定しやすいと思います。
それでは実際にエラーメッセージを日本語にしていきます。ユーザー登録画面でメールアドレスとパスワードを空欄にして登録しようとすると、下の画像のようにエラーが表示されます。
上の画像のエラーメッセージを日本語メッセージに変更します。devise.ja.ymlの最終行の、
other: "%{count} errors prohibited this %{resource} from being saved:"
を次のように編集します。
other: "%{count}個のエラーがあるため、ユーザーを保存出来ません。"
また、config/application.rbの末尾に
config.i18n.default_locale = :ja
を追加してrails sコマンドででサーバーを再起動すると、
このようにdeviseのメッセージが日本語に変換されました。後は同じ要領で変更したいdeviseのメッセージ文をdevise.ja.ymlの中で編集すれば解決できます。