💡
この記事は Middleman 時代に書いた古いものです。記録のため、astro-notion-blog に移行していますが、あまり参考にしないでください。
devise が表示するメッセージは全て英語になっている. 【Rails5】devise を日本語化する を参考に devise を日本語化する.
notice, alert メッセージの日本語化
-
config/application.rb に default locale の設定を追記する.
module Attendance class Application < Rails::Application config.i18n.default_locale = :ja
- devise.ja.yml を I18n - plataformatec/devise Wiki - GitHub から取得する.
- 取得した devise.ja.yml を config/locales/devise.ja.yml に保存する.
-
この結果,devise が表示するメッセージは日本語化される.
モデルの日本語化
-
これだけでは form で表示されるラベルは日本語化されない.そこで,model の属性についても日本語化する.config/locales/models.ja.yml に teacher モデルの属性の翻訳テキストを記述する.
ja: activerecord: attributes: teacher: email: メールアドレス name: 氏名 password: パスワード password_confirmation: 確認用パスワード remember_me: 次回から自動的にログイン
-
この結果,form の label 部分が日本語化される.
ビューの日本語化
form 部分のラベルは直ったものの,属性以外の部分はまだ英語が残ったままである.これらも locale で対応する.こうすることで,翻訳のゆらぎがなくなるだけでなく,翻訳がふさわしくない時に,yml を書き換えるだけでサイト全体の修正をする必要がなくなる.
-
config/locales/views.ja.yml を記載する(全部書くと大変なので一部のみ掲載).
ja: devise: sessions: new: log_in: 'ログイン' registrations: new: sign_up: 'サインアップ' shared: links: log_in: 'ログイン' sign_up: 'サインアップ' forgot_your_password: 'パスワードを忘れた?'
-
現在の views は単にメッセージが直接書かれている. そこで,メッセージ部分を I18n.t で変換する. ただし,application_helper で I18n は include されているので,ビューでは t だけ書けばよい. また,locale の yml に書かれている locale を直接指定すると,jp.devise.sessions.new.log_in となるが,ビューのページ名に相当する部分は省略可能となるため,単に「t('.log_in')」だけを書けばよい.例としてサインインページの該当部分は app/views/devises/sessions/new.html.haml は以下のようになる.
%h2= t '.log_in' (中略) .actions = f.submit t('.log_in') = render "devise/shared/links"
-
一番下の devise/shared/links は各ページから呼び出されているので,こちらも修正する.上に書かれているように jp.deise.shared.link.* に翻訳文字列を記載しているので,こちらも .log_in のようにすればよい.最終的にこんな感じで日本語化された.
長くなったので今日はここまで