<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def save_translation(self, translation, *args, **kwargs):
 """ Save the translation when it's modified, or unsaved. .. note:: When a derived model provides additional translated fields, this method receives both the original and extended translation. To distinguish between both objects, check for ``translation.related_name``. :param translation: The translation :type translation: TranslatedFieldsModel :param args: Any custom arguments to pass to :func:`save`. :param kwargs: Any custom arguments to pass to :func:`save`. """

        if self.pk is None or self._state.adding:
            raise RuntimeError("Can't save translations when the master object is not yet saved.")

        # Translation models without any fields are also supported.
        # This is useful for parent objects that have inlines;
        # the parent object defines how many translations there are.
        if translation.pk is None or translation.is_modified:
            if not translation.master_id:  # Might not exist during first construction
                translation._state.db = self._state.db
                translation.master = self
            translation.save(*args, **kwargs)