docs: 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)