Ruby Ruby on Rails Web開発 プログラミング

Ruby on Rails 8.1 アプリを日本語化する方法(Devise対応)


Rails アプリを日本語化する際、特に Devise を使ったログイン・登録画面も含める場合の手順です。

この記事を書いてる人

082p
082p

ご訪問、ありがとうございます!

システムエンジニア兼動画クリエーターとして活動しています。
主にRubyを得意とし、Ruby on Railsを中心にWebアプリケーション開発を行っています。
業務ではSQLやJavaScriptに触れることも多く、バックエンドからデータベースまで幅広く対応しています。
このブログでは、Ruby on RailsやPython(Django)などのWebアプリケーション開発やデータベース関連の技術記事を中心に、時々C#やWPFなどの開発内容についても発信しています。

Gem の導入

Rails-i18n を導入します。

# Gemfile
gem 'rails-i18n', '~> 8.1'
bundle install


これで Rails の標準的な日本語化ファイルが使えるようになります。

Devise メッセージの日本語化

config/locales/devise.ja.yml を新規作成し、Devise の各種メッセージを日本語化します。

ja:
  devise:
    confirmations:
      confirmed: 'アカウントを登録しました。'
      send_instructions: 'アカウントの有効化について数分以内にメールでご連絡します。'
      send_paranoid_instructions: "あなたのメールアドレスが登録済みの場合、本人確認用のメールが数分以内に送信されます。"
    failure:
      already_authenticated: 'すでにログインしています。'
      inactive: 'アカウントが有効化されていません。メールに記載された手順にしたがって、アカウントを有効化してください。'
      invalid: "%{authentication_keys} もしくはパスワードが不正です。"
      timeout: 'セッションがタイムアウトしました。もう一度ログインしてください。'
      unauthenticated: 'アカウント登録もしくはログインしてください。'
    sessions:
      signed_in: 'ログインしました。'
      signed_out: 'ログアウトしました。'
      already_signed_out: '既にログアウト済みです。'
    registrations:
      signed_up: 'アカウント登録が完了しました。'
      destroyed: 'アカウントを削除しました。またのご利用をお待ちしております。'
      updated: 'アカウント情報を変更しました。'
    passwords:
      updated: 'パスワードが正しく変更されました。'
      send_instructions: 'パスワードの再設定について数分以内にメールでご連絡いたします。'

⚠️ Deviseのフラッシュメッセージやエラー文もここで日本語化できるので、ユーザーに優しいアプリになります。

アプリ全体の日本語化設定

config/application.rb に以下を追加します。

# 日本語化
config.i18n.default_locale = :ja

# 標準時間を東京に設定
config.time_zone = 'Tokyo'
  • default_locale に :ja を指定することで、Rails 全体の標準言語が日本語に。
  • time_zone を Tokyo に設定すると、ActiveRecord の時間も日本時間になります。

ActiveRecord 属性や汎用ラベルの日本語化

config/locales/ja.yml を作成します。

ja:
  activerecord:
    attributes:
      user:
        full_name: 氏名
        email: メールアドレス
        password: パスワード
        password_confirmation: パスワードの確認
  datetime:
    distance_in_words:
      x_minutes:
        one: "約1分前"
        other: "約%{count}分前"
      x_hours:
        one: "約1時間前"
        other: "約%{count}時間前"
  views:
    pagination:
      first: "« 最初"
      last: "最後 »"
      previous: "‹ 前"
      next: "次 ›"

ポイント:

  • モデルの属性名やフォームラベルを日本語化。
  • 日付・時間の表現を日本語に。
  • ページネーションなどのヘルパーも日本語化可能。

結果

  • Devise のログイン・登録・パスワード再設定画面も日本語化。
  • Rails のバリデーションエラーやフラッシュメッセージも日本語。
  • 日付・時間・フォームラベルも日本語で統一。

-Ruby, Ruby on Rails, Web開発, プログラミング