Why don't I get the correct error messages?

This is my model

    class Product < ActiveRecord::Base

      validates_presence_of :title, :description, :image_url
      validates_numericality_of :price
      validate :price_must_be_at_least_a_cent
      validates_uniqueness_of :title
      validates_format_of :image_url,
                          :with => %r{\.(gif|jpg|png)$}i,
                          :message => 'must be a URL for GIF, JPG ' +
                          'or PNG image.(gif|jpg|png)'

      def price_must_be_at_least_a_cent
      errors.add(:price, 'should be at least 0.01' ) if price.nil? ||
      price < 0.01

It validates all the errors correctly but i get the generic error

These are the error messages I get

There were problems with the following fields:
{{attribute}} {{message}}
{{attribute}} {{message}}
{{attribute}} {{message}}
{{attribute}} {{message}}
{{attribute}} {{message}}

This is due to incompatibility in your rails version and i18n version.

If you are on Rails 2.3 branch… then upgrade to 2.3.8 or higher

or copy over the error messages yml file from your activerecord gem installation into your locales directory

and change {{attribute}} to %{attribute}

{{message}} to %{message}

{{count}} to %{count}

and so on