# 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