2011-02-14 18:51:42 +0900
Railsのconfig/locale/*.ymlでgreeting: 'hello %{object}'のようにするとハマるという話。
Railsでメッセージを国際化するためにconfig/locale/*.ymlを用意する際、
greeting: 'hello %{object}'
のようにInterpolationのキーにobjectという文字列を使うと、
I18n.t 'greeting', :object => 'world'
というコードを実行しても値が置換されません。i18n gemのソースを読んでみたところ、以下のようにいくつかのキーが予約されており、tメソッド(translateメソッド)のオプションに含まれていた場合に値が除去されるようになっていました。
RESERVED_KEYS = [:scope, :default, :separator, :resolve, :object, :fallback, :format, :cascade, :raise, :rescue_format]
いつかまたハマりそうなので残しておきます。