前回導入したいdevise(Railsアプリにサクッとdeviseを導入)の日本語化を行います。
Rails6。色々、変わってるのでメモしておきます。

devise-i18nインストール

Gemfileの最終行(deviseの後)に追加

gem 'devise-i18n'
gem 'devise-i18n-views'
$ bundle install
$ rails g devise:views:locale ja
      create  config/locales/devise.views.ja.yml

config/application.rbの13行目辺りに追加

    config.i18n.default_locale = :ja

validationのメッセージが足りないので、
devise.ja.ymlを作成

ja:
  activerecord:
    errors:
      models:
        user:
          attributes:
            email:
              taken: "は既に使用されています。"
              blank: "が入力されていません。"
              too_short: "は%{count}文字以上に設定してください。"
              too_long: "は%{count}文字以下に設定してください。"
              invalid: "は有効でありません。"
            password:
              blank: "が入力されていません。"
              too_short: "は%{count}文字以上に設定してください。"
              too_long: "は%{count}文字以下に設定してください。"
              invalid: "は有効でありません。"
            password_confirmation:
              confirmation: "が%{attribute}と一致しません。"
            current_password:
              blank: "が入力されていません。"
              invalid: "が違います。"
ja:
  activerecord:
    errors:
      models:
        user:
          attributes:
            email:
              taken: "既に使用されています。"
              blank: "入力してください。"
              too_short: "%{count}文字以上で入力してください。"
              too_long: "%{count}文字以下で入力してください。"
              invalid: "形式が正しくありません。"
            password:
              blank: "入力してください。"
              too_short: "%{count}文字以上で入力してください。"
              too_long: "%{count}文字以下で入力してください。"
            password_confirmation:
              confirmation: "%{attribute}と一致しません。"
            current_password:
              blank: "入力してください。"
              invalid: "違います。"
$ rails s
-> http://localhost:3000/

何故か、ログイン画面のタイトルとボタンと下のリンクが日本語にならないけど、
実際はデザイン適用時にベタで書く事が多いので、一旦、放置しちゃいます。

【解決】config/routes.rb で下記指定があるから。

  devise_for :users, controllers: {
    sessions: 'users/sessions'
  }

Users::SessionsController(app/controllers/users/sessions_controller.rb)が呼ばれるので、
viewは、app/views/users/sessions/new.html.erbが使われる。

登録は、未定義なので、Devise::RegistrationsControllerから、devise-i18n-viewsのが使われる。app/views/admin_users/registrations/new.html.erb作ったけど使われてなかった。

見た目はいじりたいので、下記のように修正して、view側を直すようにする。

  devise_for :users, controllers: {
    sessions: 'users/sessions',
    registrations: 'users/registrations',
    passwords: 'users/passwords'
  }

前回追加した動線の日本語化

app/views/layouts/application.html.erbの13行目辺りのを変更

      <li><%= link_to 'Edit User', edit_user_registration_path %></li>
      <li><%= link_to 'Log out', destroy_user_session_path, method: :delete %></li>
<% else %>
      <li><%= link_to 'Log in', new_user_session_path %></li>
      <li><%= link_to 'Sign up', new_user_registration_path %></li>
↓
      <li><%= link_to t('edit_user'), edit_user_registration_path %></li>
      <li><%= link_to t('log_out'), destroy_user_session_path, method: :delete %></li>
<% else %>
      <li><%= link_to t('log_in'), new_user_session_path %></li>
      <li><%= link_to t('sign_up'), new_user_registration_path %></li>

config/locales/ja.ymlを作成

ja:
  sign_up: "アカウント登録"
  log_in: "ログイン"
  log_out: "ログアウト"
  edit_user: "ユーザー編集"

【参考】ここまでのコミット内容
https://dev.azure.com/nightonly/rails-app-origin/_git/rails-app-origin/commit/f4458e474563b325398775c5282efc4aa6cb7a1c

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です