Devise Viewをカスタマイズするとdevise-i18nが効かない

Deviseの日本語化

gem devise-i18n を使う場合、i18n化されたviewを使う必要があるため、

GitHub devise-i18n

READMEのとおりに進める必要がある。基本的には以下を実行するだけ。

# Gemfile
gem 'devise-i18n'
$ rails g devise:i18n:views user
$ rails g devise:i18n:locale ja

そのあとに、DeviseのREADMEに載っているとおり、

plataformatec/devise

# config/initializers/devise.rb
config.scoped_views = true

と記述してから、rails serverを再起動する。

日本語化されない

$ rails g devise:i18n:locale ja のコマンドで、config/locales/devise.views.ja.yml の日本語化ファイルが出力される。

このファイルを開くと、30行目が devise となっているため、これを users に変更する必要がある。

$ rails g devise:i18n:views user のコマンドで、usersという名前で出力したため。この user を指定しなかった場合は、デフォルトの devise という名前で出力される。

admin用管理画面、user用管理画面と分ける場合は、 user や admin などのような名前で出力が必要になる。

devise-i18nのviewファイルの日本語化

app/views/users/ にある以下のファイル群の中で、前項のuserと名付けて出力した影響箇所(日本語化されなかった箇所)を微修正する。

./unlocks/new.html.erb
./passwords/edit.html.erb
./passwords/new.html.erb
./shared/_links.html.erb
./sessions/new.html.erb
./confirmations/new.html.erb
./registrations/edit.html.erb
./registrations/new.html.erb

たとえば、

<%= t('.remember_me') %>

となっている箇所は、

<%= t('activerecord.attributes.user.remember_me') %>

というように、YAMLファイルの記述にあわせて修正する必要がある。