code: def create_translation_field(model, field_name, lang, empty_value):
      
      if empty_value not in ('', 'both', None, NONE):
          raise ImproperlyConfigured('%s is not a valid empty_value.' % empty_value)
      field = model._meta.get_field(field_name)
      cls_name = field.__class__.__name__
      if not (isinstance(field, SUPPORTED_FIELDS) or cls_name in mt_settings.CUSTOM_FIELDS):
          raise ImproperlyConfigured(
              '%s is not supported by modeltranslation.' % cls_name)
      translation_class = field_factory(field.__class__)
      return translation_class(translated_field=field, language=lang, empty_value=empty_value)
docs: Translation field factory. Returns a ``TranslationField`` based on a
      fieldname and a language.
  
      The list of supported fields can be extended by defining a tuple of field
      names in the projects settings.py like this::
  
          MODELTRANSLATION_CUSTOM_FIELDS = ('MyField', 'MyOtherField',)
  
      If the class is neither a subclass of fields in ``SUPPORTED_FIELDS``, nor
      in ``CUSTOM_FIELDS`` an ``ImproperlyConfigured`` exception will be raised.