def add(attribute, message, i18n_options = {})
      @messages[attribute.to_sym].add(normalize_message(attribute, message, i18n_options))
      self
    end
def add(attribute, message, i18n_options = {})
      @messages[attribute.to_sym].add(normalize_message(attribute, message, i18n_options))
      self
    end
Public: Initialize a new MessageList instance.

 list_type - A Symbol representing the type of this list. This Symbol is
             used to determine the structure of the I18n key used when
             translating the given message Symbols.
             Allowed values: :messages or :errors.

 Returns a MessageList instance.

 Public: Adds a new message to the list for the given attribute.

 attribute - A Symbol describing the category, attribute, or name to which
             the message pertains.
 message - A Symbol, String, or Proc which contains the message for the
           attribute.

           If a String is given, it is directly used for the message.

           If a Symbol is given, it is used to lookup the full message
           from I18n, under the "rapporteur.<list_type>.<message Symbol>"
           key. For instance, if this is a :messages list, and the
           attribute is :time, then I18n would be queried for
           "rapporteur.messages.time".

           If a Proc is given, it is `.call`'d with no parameters. The
           return value from the Proc is directly used for the message.
 i18n_options - A Hash of optional key/value pairs to pass to the I18n
                translator.

 Examples

     list.add(:time, '2013-08-23T12:34:00Z')
     list.add(:time, :too_late)
     list.add(:time, :too_late, :time => 'midnight')
     list.add(:time, lambda { Time.now.iso8601 })

 Returns the MessageList instance.