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]
いつかまたハマりそうなので残しておきます。