Posted at

deviseの日本語対応


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コピーして編集すると、設定しやすいと思います。

それでは実際にエラーメッセージを日本語にしていきます。ユーザー登録画面でメールアドレスとパスワードを空欄にして登録しようとすると、下の画像のようにエラーが表示されます。

スクリーンショット-2019-07-19-13.17.07-768x627.png

上の画像のエラーメッセージを日本語メッセージに変更します。devise.ja.ymlの最終行の、


devise.ja.yml

other: "%{count} errors prohibited this %{resource} from being saved:"


を次のように編集します。


devise.ja.yml

other: "%{count}個のエラーがあるため、ユーザーを保存出来ません。"


また、config/application.rbの末尾に


config/application.rb

config.i18n.default_locale = :ja


を追加してrails sコマンドででサーバーを再起動すると、

スクリーンショット-2019-07-19-13.45.44-768x198.png

このようにdeviseのメッセージが日本語に変換されました。後は同じ要領で変更したいdeviseのメッセージ文をdevise.ja.ymlの中で編集すれば解決できます。