👀
rails i18n 変数を確認する
Railsアプリを一人で開発中です。
パスワードリセット機能を実装しました。
パスワードとパスワード確認が一致しない場合のエラーメッセージを用意しています。
i18nはメッセージ内で変数を使うことができることを知っています。
使うことができる変数の確認方法が分からないので探しました。
I18n.interpolate_hashの中でbinding.pryを止めることで、
確認することができることが分かりました。
def interpolate_hash(string, values)
pattern = INTERPOLATION_PATTERNS_CACHE[config.interpolation_patterns]
interpolated = false
interpolated_string = string.gsub(pattern) do |match|
interpolated = true
if match == '%%'
'%'
else
key = ($1 || $2 || match.tr("%{}", "")).to_sym
binding.pry # <= ここ
string #=> "と%{attribute}の入力が一致しません"
values #=> {:model=>"ユーザー", :attribute=>"パスワード", :value=>"dummy"}
▼ 関連箇所
- lib/i18n/backend/base.rb:184
- lib/i18n/interpolate/ruby.rb:23
- lib/i18n/interpolate/ruby.rb:29
Discussion