def METHOD_NAME(self, batch_size=None):
    """
    Retrive and search for fields to be translated
    batch_size: how many instances to translate for each model. None will be all
    """
    translatable_models = self.get_translatable_models()
    logger.info(f'Languages: {AVAILABLE_LANGUAGES}')
    logger.info(f'Default language: {mt_settings.DEFAULT_LANGUAGE}')
    logger.info(f'Number of models: {len(translatable_models)}')
    for model in translatable_models:
        logger.info(f'Processing for Model: {model._meta.verbose_name.title()}')
        translatable_fields = self.get_translatable_fields(model)
        if not translatable_fields:
            continue
        # Process recent entities first
        qs = model.objects.filter(
            self._get_filter(translatable_fields),
            # Skip which are flagged by user
            **{TRANSLATOR_SKIP_FIELD_NAME: False},
        ).order_by('-id')
        qs_count = qs.count()
        index = 1
        logger.info(f'\tFields: {translatable_fields}')
        logger.info(f'\tTotal instances: {qs_count}')
        if batch_size is not None:
            logger.info(f'\tProcessing instances: {min(qs_count, batch_size)}')
            qs = qs.all()[:batch_size]
        else:
            qs = qs.all()
        for obj in qs.iterator():
            # Skip if it is flagged as skip by user # TODO: Remove this later
            assert getattr(obj, TRANSLATOR_SKIP_FIELD_NAME) is False
            logger.info(f'\t\t ({index}/{qs_count}) - {obj}')
            self.translate_model_fields(obj, translatable_fields)
            index += 1