def parse_error_messages(e):
    """
    Takes an error and parses its messages in human-readable form.

    Where there are message dictionaries, separates out each message,
    parsing the keys into sentence case with title capitalisations

    :param e:
    :type e: django.core.exceptions.ValidationError

    :returns: A list of error messages
    """
    response = []

    if hasattr(e, "message_dict"):
        for key, value in e.message_dict.items():
            msg = f'{key.replace("_", " ").title()}:'
            for v in value:
                msg += f" {v}"
            response.append(msg)
    else:
        response.append(str(e))

    return response