【Rails5】devise を日本語化する
前回はログイン機能の実装を行いましたが、今回はこれを日本語化していきたいと思います。
デフォルトのロケールを設定する
deviseのページに方法が書いてあるので、これどおりにやっていきます。
I18n · plataformatec/devise Wiki · GitHub
config/application.rb にデフォルトのロケールを設定します。
config.i18n.default_locale = :ja
デフォルトで何か設定されている場合は修正してください。
日本語化ファイルを設定する
config/locales/devise.ja.yml というファイルを作成し、上記ページにある日本語翻訳ファイルをコピペします。
# Additional translations at https://github.com/plataformatec/devise/wiki/I18n
ja:
devise:
confirmations:
confirmed: 'アカウントを登録しました。'
send_instructions: 'アカウントの有効化について数分以内にメールでご連絡します。'
send_paranoid_instructions: "あなたのメールアドレスが登録済みの場合、本人確認用のメールが数分以内に送信されます。"
failure:
already_authenticated: 'すでにログインしています。'
inactive: 'アカウントが有効化されていません。メールに記載された手順にしたがって、アカウントを有効化してください。'
invalid: "%{authentication_keys} もしくはパスワードが不正です。"
locked: 'あなたのアカウントは凍結されています。'
last_attempt: 'あなたのアカウントが凍結される前に、複数回の操作がおこなわれています。'
not_found_in_database: "%{authentication_keys} もしくはパスワードが不正です。"
timeout: 'セッションがタイムアウトしました。もう一度ログインしてください。'
unauthenticated: 'アカウント登録もしくはログインしてください。'
unconfirmed: 'メールアドレスの本人確認が必要です。'
mailer:
confirmation_instructions:
subject: 'アカウントの有効化について'
reset_password_instructions:
subject: 'パスワードの再設定について'
unlock_instructions:
subject: 'アカウントの凍結解除について'
password_change:
subject: 'パスワードの変更について'
omniauth_callbacks:
failure: "%{kind} アカウントによる認証に失敗しました。理由:(%{reason})"
success: "%{kind} アカウントによる認証に成功しました。"
passwords:
no_token: "このページにはアクセスできません。パスワード再設定メールのリンクからアクセスされた場合には、URL をご確認ください。"
send_instructions: 'パスワードの再設定について数分以内にメールでご連絡いたします。'
send_paranoid_instructions: "あなたのメールアドレスが登録済みの場合、パスワード再設定用のメールが数分以内に送信されます。"
updated: 'パスワードが正しく変更されました。'
updated_not_active: 'パスワードが正しく変更されました。'
registrations:
destroyed: 'アカウントを削除しました。またのご利用をお待ちしております。'
signed_up: 'アカウント登録が完了しました。'
signed_up_but_inactive: 'ログインするためには、アカウントを有効化してください。'
signed_up_but_locked: 'アカウントが凍結されているためログインできません。'
signed_up_but_unconfirmed: '本人確認用のメールを送信しました。メール内のリンクからアカウントを有効化させてください。'
update_needs_confirmation: 'アカウント情報を変更しました。変更されたメールアドレスの本人確認のため、本人確認用メールより確認処理をおこなってください。'
updated: 'アカウント情報を変更しました。'
sessions:
signed_in: 'ログインしました。'
signed_out: 'ログアウトしました。'
already_signed_out: '既にログアウト済みです。'
unlocks:
send_instructions: 'アカウントの凍結解除方法を数分以内にメールでご連絡します。'
send_paranoid_instructions: 'アカウントが見つかった場合、アカウントの凍結解除方法を数分以内にメールでご連絡します。'
unlocked: 'アカウントを凍結解除しました。'
errors:
messages:
already_confirmed: 'は既に登録済みです。ログインしてください。'
confirmation_period_expired: "の期限が切れました。%{period} までに確認する必要があります。 新しくリクエストしてください。"
expired: 'の有効期限が切れました。新しくリクエストしてください。'
not_found: 'は見つかりませんでした。'
not_locked: 'は凍結されていません。'
not_saved:
one: "エラーが発生したため %{resource} は保存されませんでした:"
other: "%{count} 件のエラーが発生したため %{resource} は保存されませんでした:"
これで devise に関連する表示は日本語化できました。
モデルも日本語化する
ついでと言っては何ですが、フォームなどに表示される項目も日本語化していきたいと思います。
Email や Password といった表示はモデルの属性によるものなので、 config/locales/models.ja.yml などのファイルを作成し、以下を追記します。
ja:
activerecord:
attributes:
user:
email: メールアドレス
password: パスワード
password_confirmation: 確認用パスワード
remember_me: 次回から自動的にログイン
これでフォームに表示される項目も日本語化できます。
それ以外の日本語化
それ以外の箇所は直接viewにかかれているようなので、それを修正すればいいかと。必要に応じて I18n 化する感じです。
例えば app/views/devise/sessions/new.html.erb がログインフォームなので、このファイルを開いて日本語に書き換えます。
<h2>ログイン</h2>
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true %>
</div>
<div class="field">
<%= f.label :password %><br />
<%= f.password_field :password, autocomplete: "off" %>
</div>
<% if devise_mapping.rememberable? -%>
<div class="field">
<%= f.check_box :remember_me %>
<%= f.label :remember_me %>
</div>
<% end -%>
<div class="actions">
<%= f.submit "ログイン" %>
</div>
<% end %>
<%= render "devise/shared/links" %>
一番最後にある devise/shared/links はフォームの最下部にあるリンクを作成している viewなので、これも必要に合わせて修正してください。
以上、 devise の日本語化でした!
devise 関連記事はこちら
【Rails5】devise でログイン後、ログアウト後のページを設定する
【Rails5】devise でログイン後ページをユーザー意図に合わせて変更する