'Fetch the item and do string interpolation.'

def __getitem__(self, key):

    val = dict.__getitem__(self, key)
    if self.main.interpolation:
        if isinstance(val, basestring):
            return self._interpolate(key, val)
        if isinstance(val, list):
            def _check(entry):
                if isinstance(entry, basestring):
                    return self._interpolate(key, entry)
                return entry
            new = [_check(entry) for entry in val]
            if (new != val):
                return new
    return val
