<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def register(model, fields, restrict_to=None, manager=None, properties=None, contexts=None):
 """Tell vinaigrette which fields on a Django model should be translated. Arguments: model -- The relevant model class fields -- A list or tuple of field names. e.g. ['name', 'nickname'] restrict_to -- Optional. A django.db.models.Q object representing the subset of objects to collect translation strings from. manager -- Optional. A reference to a manager -- e.g. Person.objects -- to use when collecting translation strings. properties -- A dictionary of "read only" properties that are composed by more that one field e.g. {'full_name': ['first_name', 'last_name']} contexts -- A dictionary including any (pgettext) context that may need to be applied to each field. e.g. {'name': 'db category name', 'description': 'db detailed category description'} Note that both restrict_to and manager are only used when collecting translation strings. Gettext lookups will always be performed on relevant fields for all objects on registered models. """

    if not contexts:
        contexts = {}

    global _REGISTRY
    _REGISTRY[model] = {
        'fields': fields,
        'contexts': contexts,
        'restrict_to': restrict_to,
        'manager': manager,
        'properties': properties,
    }

    for field in fields:
        setattr(model, field, VinaigretteDescriptor(field, contexts.get(field, None)))
    model.untranslated = lambda self, fieldname: self.__dict__[fieldname]

    pre_save.connect(_vinaigrette_pre_save, sender=model)
    post_save.connect(_vinaigrette_post_save, sender=model)