-1024x576.png)
Rails アプリを日本語化する際、特に Devise を使ったログイン・登録画面も含める場合の手順です。
この記事を書いてる人
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 のバリデーションエラーやフラッシュメッセージも日本語。
- 日付・時間・フォームラベルも日本語で統一。


