'Assembles the relative url for that rule and the subdomain.
If building doesn\'t work for some reasons `None` is returned.
:internal:'

def build(self, values, append_unknown=True):

    tmp = []
    add = tmp.append
    processed = set(self.arguments)
    for (is_dynamic, data) in self._trace:
        if is_dynamic:
            try:
                add(self._converters[data].to_url(values[data]))
            except ValidationError:
                return
            processed.add(data)
        else:
            add(url_quote(to_bytes(data, self.map.charset), safe='/:|+'))
    (domain_part, url) = u''.join(tmp).split(u'|', 1)
    if append_unknown:
        query_vars = MultiDict(values)
        for key in processed:
            if (key in query_vars):
                del query_vars[key]
        if query_vars:
            url += (u'?' + url_encode(query_vars, charset=self.map.charset, sort=self.map.sort_parameters, key=self.map.sort_key))
    return (domain_part, url)
