'Resolve the alias based on the given data.
This is done recursively, so if one alias resolves to a second alias,
that second alias will also be resolved.
:param data: the locale data
:type data: `dict`'

def resolve(self, data):

    base = data
    for key in self.keys:
        data = data[key]
    if isinstance(data, Alias):
        data = data.resolve(base)
    elif isinstance(data, tuple):
        (alias, others) = data
        data = alias.resolve(base)
    return data
