第15回: Devise によるユーザー認証機能の日本語化(1)
2010/10/09
諸事情により、前回から4ヶ月ほど時間が経過してしまいました。楽しみにされていた方、ごめんなさいね。
今回から、Devise を利用して作ったユーザー認証機能を日本語化していきます。
準備作業
まず、デフォルトロケールを変更します。config/application.rb
を開いて、次のような記述を探してください。
# config.i18n.default_locale = :de
そして、行頭の #
を除去し、:de
を :ja
に変更します。
次に、http://gist.github.com/606476 から yhara 氏作成の devise.ja.yml
をダウンロードして、config/locales
ディレクトリに貼り付けます。
「raw」リンクをクリックして生のソースコードを表示し、名前を付けてページを保存してください。
もし Nchack アプリケーションが起動したままであれば、再起動してください。
config/application.rb
を修正したり、config
ディレクトリに新規ファイルを追加した場合は、アプリケーションの再起動が必要です。
ログインフォームの日本語化
app/views/devise/sessions/new.html.erb
を開いてください。
<h2>Sign in</h2> <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %> <p><%= f.label :email %></p> <p><%= f.text_field :email %></p> <p><%= f.label :password %></p> <p><%= f.password_field :password %></p> <% if devise_mapping.rememberable? -%> <p><%= f.check_box :remember_me %> <%= f.label :remember_me %></p> <% end -%> <p><%= f.submit "Sign in" %></p> <% end %> <%= render :partial => "devise/shared/links" %>
1行目と14行目にある Sign in
を ログイン
に書き換えます。
次に、app/views/devise/shared/_links.erb
を開いてください。
<%- if controller_name != 'sessions' %> <%= link_to "Sign in", new_session_path(resource_name) %><br /> <% end -%> <%- if devise_mapping.registerable? && controller_name != 'registrations' %> <%= link_to "Sign up", new_registration_path(resource_name) %><br /> <% end -%> <%- if devise_mapping.recoverable? && controller_name != 'passwords' %> <%= link_to "Forgot your password?", new_password_path(resource_name) %><br /> <% end -%> <%- if devise_mapping.confirmable? && controller_name != 'confirmations' %> <%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %><br /> <% end -%> <%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %> <%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %><br /> <% end -%>
このファイルのテキスト部分をすべて日本語に翻訳します。
<%- if controller_name != 'sessions' %> <%= link_to "ログイン", new_session_path(resource_name) %><br /> <% end -%> <%- if devise_mapping.registerable? && controller_name != 'registrations' %> <%= link_to "ユーザー登録", new_registration_path(resource_name) %><br /> <% end -%> <%- if devise_mapping.recoverable? && controller_name != 'passwords' %> <%= link_to "パスワードの再発行", new_password_path(resource_name) %><br /> <% end -%> <%- if devise_mapping.confirmable? && controller_name != 'confirmations' %> <%= link_to "確認メールの再送信", new_confirmation_path(resource_name) %><br /> <% end -%> <%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %> <%= link_to "アカウント凍結解除メールの再送信", new_unlock_path(resource_name) %><br /> <% end -%>
動作確認
まだ翻訳作業は完了していませんが、とりあえず動作確認をしてみましょう。
ブラウザでトップページを開き、「ログイン」リンクをクリックします。
入力フォームのラベル部分を除いて、すべてのテキストが日本語化されています。
何も記入せずに「ログイン」ボタンをクリックしてください。
今日は、ここまでとしましょう。
[更新] 文中、devise.ja.yml
を格納するディレクトリを誤って config
と記載していました。config/locales
と訂正しました。(2011/5/10)