code: def _scan_xgettext_from_files(target, source, env, files=None, path=None):
      import re
      import SCons.Util
      import SCons.Node.FS
      if files is None:
          return 0
      if not SCons.Util.is_List(files):
          files = [files]
      if path is None:
          if 'XGETTEXTPATH' in env:
              path = env['XGETTEXTPATH']
          else:
              path = []
      if not SCons.Util.is_List(path):
          path = [path]
      path = SCons.Util.flatten(path)
      dirs = ()
      for p in path:
          if not isinstance(p, SCons.Node.FS.Base):
              if SCons.Util.is_String(p):
                  p = env.subst(p, source=source, target=target)
              p = env.arg2nodes(p, env.fs.Dir)
          dirs += tuple(p)
      if not dirs:
          dirs = (env.fs.getcwd(),)
      re_comment = re.compile(r'^
      re_emptyln = re.compile(r'^[ \t\r]*$\r?\n?', re.M)
      re_trailws = re.compile(r'[ \t\r]+$')
      for f in files:
          if isinstance(f, SCons.Node.FS.Base) and f.rexists():
              contents = f.get_text_contents()
              contents = re_comment.sub("", contents)
              contents = re_emptyln.sub("", contents)
              contents = re_trailws.sub("", contents)
              depnames = contents.splitlines()
              for depname in depnames:
                  depfile = SCons.Node.FS.find_file(depname, dirs)
                  if not depfile:
                      depfile = env.arg2nodes(depname, dirs[0].File)
                  env.Depends(target, depfile)
      return 0