Sooey

2011-02-14 18:51:42 +0900

Railsのconfig/locale/*.ymlgreeting: '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]

いつかまたハマりそうなので残しておきます。