'Translates the form data into subrequests and issues a
response.
:param env: The WSGI environment dict.
:param boundary: The MIME type boundary to look for.
:returns: status_line, headers_list, body'

def _translate_form(self, env, boundary):

    keys = self._get_keys(env)
    status = message = ''
    attributes = {}
    subheaders = []
    file_count = 0
    for fp in iter_multipart_mime_documents(env['wsgi.input'], boundary, read_chunk_size=READ_CHUNK_SIZE):
        hdrs = parse_mime_headers(fp)
        (disp, attrs) = parse_content_disposition(hdrs.get('Content-Disposition', ''))
        if ((disp == 'form-data') and attrs.get('filename')):
            file_count += 1
            try:
                if (file_count > int((attributes.get('max_file_count') or 0))):
                    status = '400    Bad    Request'
                    message = 'max    file    count    exceeded'
                    break
            except ValueError:
                raise FormInvalid('max_file_count    not    an    integer')
            attributes['filename'] = (attrs['filename'] or 'filename')
            if (('content-type' not in attributes) and ('content-type' in hdrs)):
                attributes['content-type'] = (hdrs['Content-Type'] or 'application/octet-stream')
            (status, subheaders, message) = self._perform_subrequest(env, attributes, fp, keys)
            if (not status.startswith('2')):
                break
        else:
            data = ''
            mxln = MAX_VALUE_LENGTH
            while mxln:
                chunk = fp.read(mxln)
                if (not chunk):
                    break
                mxln -= len(chunk)
                data += chunk
            while fp.read(READ_CHUNK_SIZE):
                pass
            if ('name' in attrs):
                attributes[attrs['name'].lower()] = data.rstrip('\r\n--')
    if (not status):
        status = '400    Bad    Request'
        message = 'no    files    to    process'
    headers = [(k, v) for (k, v) in subheaders if k.lower().startswith('access-control')]
    redirect = attributes.get('redirect')
    if (not redirect):
        body = status
        if message:
            body = ((status + '\r\nFormPost:    ') + message.title())
        headers.extend([('Content-Type', 'text/plain'), ('Content-Length', len(body))])
        return (status, headers, body)
    status = status.split('    ', 1)[0]
    if ('?' in redirect):
        redirect += '&'
    else:
        redirect += '?'
    redirect += ('status=%s&message=%s' % (quote(status), quote(message)))
    body = ('<html><body><p><a    href="%s">Click    to    continue...</a></p></body></html>' % redirect)
    headers.extend([('Location', redirect), ('Content-Length', str(len(body)))])
    return ('303    See    Other', headers, body)
