'Set multiple stanza interface values using a dictionary.
Stanza plugin values may be set using nested dictionaries.
:param values: A dictionary mapping stanza interface with values.
Plugin interfaces may accept a nested dictionary that
will be used recursively.
.. versionadded:: 1.0-Beta1'

def _set_stanza_values(self, values):

    iterable_interfaces = [p.plugin_attrib for p in self.plugin_iterables]
    if (u'lang' in values):
        self[u'lang'] = values[u'lang']
    if (u'substanzas' in values):
        for stanza in self.iterables:
            try:
                self.xml.remove(stanza.xml)
            except ValueError:
                pass
        self.iterables = []
        for subdict in values[u'substanzas']:
            if (u'__childtag__' in subdict):
                for subclass in self.plugin_iterables:
                    child_tag = (u'{%s}%s' % (subclass.namespace, subclass.name))
                    if (subdict[u'__childtag__'] == child_tag):
                        sub = subclass(parent=self)
                        sub.values = subdict
                        self.iterables.append(sub)
    for (interface, value) in values.items():
        full_interface = interface
        interface_lang = (u'%s|' % interface).split(u'|')
        interface = interface_lang[0]
        lang = (interface_lang[1] or self.get_lang())
        if (interface == u'lang'):
            continue
        elif (interface == u'substanzas'):
            continue
        elif (interface in self.interfaces):
            self[full_interface] = value
        elif (interface in self.plugin_attrib_map):
            if (interface not in iterable_interfaces):
                plugin = self._get_plugin(interface, lang)
                if plugin:
                    plugin.values = value
    return self
