code: def translate(self, package, into=None):
      
      if not isinstance(package, SourcePackage):
        return None
      if not package.local:
        raise ValueError('SourceTranslator cannot translate remote packages.')
  
      installer = None
      version = self._interpreter.version
      unpack_path = Archiver.unpack(package.local_path)
      into = into or safe_mkdtemp()
  
      try:
        if self._use_2to3 and version >= (3,):
          with TRACER.timed('Translating 2->3 %s' % package.name):
            self.run_2to3(unpack_path)
        installer = self._installer_impl(unpack_path, interpreter=self._interpreter)
        with TRACER.timed('Packaging %s' % package.name):
          try:
            dist_path = installer.bdist()
          except self._installer_impl.InstallFailure as e:
            TRACER.log('Failed to install package at %s: %s' % (unpack_path, e))
            return None
          target_path = os.path.join(into, os.path.basename(dist_path))
          safe_copy(dist_path, target_path)
          target_package = Package.from_href(target_path)
          if not target_package:
            TRACER.log('Target path %s does not look like a Package.' % target_path)
            return None
          if not target_package.compatible(self._supported_tags):
            TRACER.log('Target package %s is not compatible with %s' % (
                target_package, self._supported_tags))
            return None
          return DistributionHelper.distribution_from_path(target_path)
      except Exception as e:
        TRACER.log('Failed to translate %s' % package)
        TRACER.log(traceback.format_exc())
      finally:
        if installer:
          installer.cleanup()
        if unpack_path:
          safe_rmtree(unpack_path)
docs: From a SourcePackage, translate to a binary distribution.