読者です 読者をやめる 読者になる 読者になる

グロースエンジニアのブログ

プログラミングとウェブ解析をやっています。Googleアナリティクス好きなRuby on Rails エンジニアです!

【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 でログイン後、ログアウト後のページを設定する

【Rails5】devise でログイン後ページをユーザー意図に合わせて変更する