input: Write a function that implements the `download_subtitles` functionality described in the given Python script. The function should accept a list of release paths, a list of subtitle engines (defaulting to the default subtitle engine if none are provided), and a language (defaulting to the default language if none is provided). The function should attempt to download subtitles for each release path using each provided engine and print a message indicating whether the download was successful or if the subtitles were not found. If the list of releases is empty, the function should do nothing.
  
  
  def download_subtitles(releases, engines=[DEFAULTS['subtitle_engine']], lang=DEFAULTS['subtitle_language']):
      if releases:
          for release in releases:
              for engine in engines:
                  subtitle_release = SubtitleSite.get_file_properties(release)['release_name']
                  print "[{engine: ^15}] Trying To Download Subtitles For: '{release}'".format(engine=engine,
                                                                                               release=subtitle_release)
                  sub_obj = SubtitleSite.class_factory(engine)
                  subtitle_path = sub_obj.download_subtitle(release, lang)
                  if subtitle_path:
                      print "{0:17} Download Success: ({file_path}).\n".format("", file_path=subtitle_path)
                  else:
                      print "{0:17} Subtitles Not Found.\n".format("")
  
  assert download_subtitles(['/path/to/movie1'], ['OpenSubtitles'], 'en') == None
  assert download_subtitles(['/path/to/movie2'], ['Podnapisi'], 'es') == None
  assert download_subtitles([], ['OpenSubtitles']) == None
  assert download_subtitles(['/path/to/movie3']) == None
  assert download_subtitles(['/path/to/movie4'], ['Subscene'], 'fr') == None
  
  
  **Expected Output:**
  - For the first assert, the function should attempt to download English subtitles from the OpenSubtitles engine for `/path/to/movie1`.
  - For the second assert, the function should attempt to download Spanish subtitles from the Podnapisi engine for `/path/to/movie2`.
  - For the third assert, the function should do nothing since the release list is empty.
  - For the fourth assert, the function should attempt to download subtitles using the default engine and language for `/path/to/movie3`.
  - For the fifth assert, the function should attempt to download French subtitles from the Subscene engine for `/path/to/movie4`.
  
  Note: The actual output will depend on the availability of subtitles and the response from the subtitle sites, but the function should print the appropriate messages as described in the script.
output: def download_subtitles(releases, engines=[DEFAULTS['subtitle_engine']], lang=DEFAULTS['subtitle_language']):
      if releases:
          for release in releases:
              for engine in engines:
                  subtitle_release = SubtitleSite.get_file_properties(release)['release_name']
                  print "[{engine: ^15}] Trying To Download Subtitles For: '{release}'".format(engine=engine,
                                                                                               release=subtitle_release)
                  sub_obj = SubtitleSite.class_factory(engine)
                  subtitle_path = sub_obj.download_subtitle(release, lang)
                  if subtitle_path:
                      print "{0:17} Download Success: ({file_path}).\n".format("", file_path=subtitle_path)
                  else:
                      print "{0:17} Subtitles Not Found.\n".format("")