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)
enforce_available_locales!(locale)
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