# File lib/i18n.rb, line 144
    def translate(*args)
      options = args.last.is_a?(Hash) ? args.pop : {}
      key     = args.shift
      backend = config.backend
      locale  = options.delete(:locale) || config.locale
      raises  = options.delete(:raise)

      raise I18n::ArgumentError if key.is_a?(String) && key.empty?

      if key.is_a?(Array)
        key.map { |k| backend.translate(locale, k, options) }
      else
        backend.translate(locale, key, options)
      end
    rescue I18n::ArgumentError => exception
      raise exception if raises
      handle_exception(exception, locale, key, options)
    end