diff --git a/typo3/sysext/core/Classes/DataHandling/DataHandler.php b/typo3/sysext/core/Classes/DataHandling/DataHandler.php
index 18649cf186907d6968e122194df28cf68f73c7e8..fff706a18a1d9d5a5b696154ea54747eb584d946 100644
--- a/typo3/sysext/core/Classes/DataHandling/DataHandler.php
+++ b/typo3/sysext/core/Classes/DataHandling/DataHandler.php
@@ -4438,10 +4438,8 @@ class DataHandler implements LoggerAwareInterface
             return false;
         }
 
-        $GLOBALS['TCA'][$table]['ctrl'] += ['languageField' => '', 'transOrigPointerField' => ''];
-
         $this->registerNestedElementCall($table, $uid, 'localize-' . (string)$language);
-        if (!$GLOBALS['TCA'][$table]['ctrl']['languageField'] || !$GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField']) {
+        if (empty($GLOBALS['TCA'][$table]['ctrl']['languageField']) || empty($GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'])) {
             $this->log($table, $uid, SystemLogDatabaseAction::LOCALIZE, 0, SystemLogErrorClassification::USER_ERROR, 'Localization failed; "languageField" and "transOrigPointerField" must be defined for the table ' . $table);
             return false;
         }
@@ -7685,76 +7683,103 @@ class DataHandler implements LoggerAwareInterface
     }
 
     /**
-     * Returning uid of previous localized record, if any, for tables with a "sortby" column
-     * Used when new localized records are created so that localized records are sorted in the same order as the default language records
+     * Returning uid of "previous" localized record, if any, for tables with a "sortby" column.
+     * Used when records are localized, so that localized records are sorted in the
+     * same order as the source language records.
+     *
+     * The uid of the returned record is later used to create the localized record "after"
+     * (higher sorting value) than the one the uid is returned of.
      *
-     * For a given record (A) uid (record we're translating) it finds first default language record (from the same colpos)
-     * with sorting smaller than given record (B).
-     * Then it fetches a translated version of record B and returns it's uid.
+     * There are basically two scenarios:
+     * * The localized record is to be placed as the first record of the target pid/language
+     *   combination. In this case, there is no "before" record in this language. The method
+     *   returns input $uid, saying "insert the localized record with a higher sorting value
+     *   than the record the localization is created from".
+     * * There is a localized record "before" (lower sorting value) in the target pid/language
+     *   combination. For instance because source language element 2 is being translated and
+     *   source language element 1 has already been translated. In this case, the uid of the
+     *   'element 1' is returned, saying "insert the localized record with a higher sorting
+     *   value than the "before" record in this language.
      *
-     * If there is no record B, or it has no translation in given language, the record A uid is returned.
-     * The localized record will be placed the after record which uid is returned.
+     * The algorithm first fetches the record of given input uid. It then looks if there is a
+     * record with a lower sorting value for this pid/language combination. If no, input uid
+     * is returned ("place with higher sorting than source language record"). If yes, it looks
+     * if there is a localization of that source record in the target language and return the
+     * uid of that target language record ("place with higher sorting that this traget language
+     * record"). When dealing with table tt_content, colpos is also taken into account.
      *
      * @param string $table Table name
-     * @param int $uid Uid of default language record
-     * @param int $pid Pid of default language record
-     * @param int $language Language of localization
+     * @param int $uid Uid of source language record
+     * @param int $pid Pid of source language record
+     * @param int $targetLanguage Target language id
      * @return int uid of record after which the localized record should be inserted
      */
-    protected function getPreviousLocalizedRecordUid($table, $uid, $pid, $language)
+    protected function getPreviousLocalizedRecordUid($table, $uid, $pid, $targetLanguage)
     {
         $previousLocalizedRecordUid = $uid;
         $sortColumn = $GLOBALS['TCA'][$table]['ctrl']['sortby'] ?? '';
-        if ($sortColumn) {
-            $select = [$sortColumn, 'pid', 'uid'];
-            // For content elements, we also need the colPos
-            if ($table === 'tt_content') {
-                $select[] = 'colPos';
-            }
-            // Get the sort value of the default language record
-            $row = BackendUtility::getRecord($table, $uid, implode(',', $select));
-            if (is_array($row)) {
-                $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table);
-                $this->addDeleteRestriction($queryBuilder->getRestrictions()->removeAll());
+        if (!$sortColumn) {
+            return $previousLocalizedRecordUid;
+        }
 
-                $queryBuilder
-                    ->select(...$select)
-                    ->from($table)
-                    ->where(
-                        $queryBuilder->expr()->eq(
-                            'pid',
-                            $queryBuilder->createNamedParameter($pid, \PDO::PARAM_INT)
-                        ),
-                        $queryBuilder->expr()->eq(
-                            $GLOBALS['TCA'][$table]['ctrl']['languageField'],
-                            $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)
-                        ),
-                        $queryBuilder->expr()->lt(
-                            $sortColumn,
-                            $queryBuilder->createNamedParameter($row[$sortColumn], \PDO::PARAM_INT)
-                        )
-                    )
-                    ->orderBy($sortColumn, 'DESC')
-                    ->addOrderBy('uid', 'DESC')
-                    ->setMaxResults(1);
-                if ($table === 'tt_content') {
-                    $queryBuilder
-                        ->andWhere(
-                            $queryBuilder->expr()->eq(
-                                'colPos',
-                                $queryBuilder->createNamedParameter($row['colPos'], \PDO::PARAM_INT)
-                            )
-                        );
-                }
-                // If there is an element, find its localized record in specified localization language on this page
-                if ($previousRow = $queryBuilder->execute()->fetchAssociative()) {
-                    $previousLocalizedRecord = BackendUtility::getRecordLocalization($table, $previousRow['uid'], $language, 'pid=' . (int)$pid);
-                    if (isset($previousLocalizedRecord[0]) && is_array($previousLocalizedRecord[0])) {
-                        $previousLocalizedRecordUid = $previousLocalizedRecord[0]['uid'];
-                    }
-                }
+        // Typically l10n_parent
+        $transOrigPointerField = $GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'];
+        // Typically sys_language_uid
+        $languageField = $GLOBALS['TCA'][$table]['ctrl']['languageField'];
+
+        $select = [$sortColumn, $languageField, $transOrigPointerField, 'pid', 'uid'];
+        // For content elements, we also need the colPos
+        if ($table === 'tt_content') {
+            $select[] = 'colPos';
+        }
+
+        // Get the sort value and some other details of the source language record
+        $row = BackendUtility::getRecord($table, $uid, implode(',', $select));
+        if (!is_array($row)) {
+            // This if may be obsolete ... didn't the callee already check if the source record exists?
+            return $previousLocalizedRecordUid;
+        }
+
+        // Try to find a "before" record in source language
+        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table);
+        $this->addDeleteRestriction($queryBuilder->getRestrictions()->removeAll());
+        $queryBuilder
+            ->select(...$select)
+            ->from($table)
+            ->where(
+                $queryBuilder->expr()->eq(
+                    'pid',
+                    $queryBuilder->createNamedParameter($pid, \PDO::PARAM_INT)
+                ),
+                $queryBuilder->expr()->eq(
+                    $languageField,
+                    $queryBuilder->createNamedParameter($row[$languageField], \PDO::PARAM_INT)
+                ),
+                $queryBuilder->expr()->lt(
+                    $sortColumn,
+                    $queryBuilder->createNamedParameter($row[$sortColumn], \PDO::PARAM_INT)
+                )
+            )
+            ->orderBy($sortColumn, 'DESC')
+            ->addOrderBy('uid', 'DESC')
+            ->setMaxResults(1);
+        if ($table === 'tt_content') {
+            $queryBuilder->andWhere(
+                $queryBuilder->expr()->eq(
+                    'colPos',
+                    $queryBuilder->createNamedParameter($row['colPos'], \PDO::PARAM_INT)
+                )
+            );
+        }
+        // If there is a "before" record in source language, see if it is localized to target language.
+        // If so, return uid of target language record.
+        if ($previousRow = $queryBuilder->execute()->fetchAssociative()) {
+            $previousLocalizedRecord = BackendUtility::getRecordLocalization($table, $previousRow['uid'], $targetLanguage, 'pid=' . (int)$pid);
+            if (isset($previousLocalizedRecord[0]) && is_array($previousLocalizedRecord[0])) {
+                $previousLocalizedRecordUid = $previousLocalizedRecord[0]['uid'];
             }
         }
+
         return $previousLocalizedRecordUid;
     }
 
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php
index 95cfb84a98bb0f18e01261d5c3eebbe923a2a1fa..a7cfa8f4a83d8fdba66ca3c8f0b948d597c9f3e6 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Core\Tests\Functional\DataHandling\Regular;
 
 use TYPO3\CMS\Core\Database\ReferenceIndex;
+use TYPO3\CMS\Core\DataHandling\DataHandler;
 use TYPO3\CMS\Core\Migrations\TcaMigration;
 use TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
@@ -255,6 +256,56 @@ abstract class AbstractActionTestCase extends AbstractDataHandlerActionTestCase
         $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdThird, ['header' => 'Testing #1']);
     }
 
+    /**
+     * Test for issue https://forge.typo3.org/issues/83079 - sorting of 'localization of localization' should
+     * use the sort value of the source record for the first localized record, and sort value of 'previous'
+     * record of target language for subsequent records.
+     */
+    public function localizeContentFromNonDefaultLanguageWithAllContentElements(): void
+    {
+        // Change defaults from import data set: We want to create all the lang 1 and lang 2 content elements
+        // with one DH call in one go per language, but the import data set has some localized content elements
+        // already. Drop those.
+        $this->setWorkspaceId(0);
+        $this->actionService->deleteRecords([
+            'tt_content' => [300, 301, 302],
+        ]);
+        if (defined('static::VALUE_WorkspaceId') > 0) {
+            $this->setWorkspaceId(static::VALUE_WorkspaceId);
+        }
+
+        // Create translated pages first
+        $this->actionService->copyRecordToLanguage(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageId);
+        $this->actionService->copyRecordToLanguage(self::TABLE_Page, self::VALUE_PageId, self::VALUE_LanguageIdSecond);
+
+        // @todo: This should be extracted as localizeRecords() in addition to localizeRecord() to ActionService
+        // Create localization of the 3 default language content elements
+        $commandMap = [
+            'tt_content' => [
+                self::VALUE_ContentIdFirst => [ 'localize' => self::VALUE_LanguageId],
+                self::VALUE_ContentIdSecond => [ 'localize' => self::VALUE_LanguageId],
+                self::VALUE_ContentIdThird => [ 'localize' => self::VALUE_LanguageId],
+            ],
+        ];
+        $dataHandler = GeneralUtility::makeInstance(DataHandler::class);
+        $dataHandler->start([], $commandMap);
+        $dataHandler->process_cmdmap();
+        // uid's of lang 1 localized elements
+        $mappingArray = $dataHandler->copyMappingArray_merged;
+
+        // Localize again, with uid's of second language as source ("translation of translation")
+        $commandMap = [
+            'tt_content' => [
+                $mappingArray['tt_content'][self::VALUE_ContentIdFirst] => ['localize' => self::VALUE_LanguageIdSecond],
+                $mappingArray['tt_content'][self::VALUE_ContentIdSecond] => ['localize' => self::VALUE_LanguageIdSecond],
+                $mappingArray['tt_content'][self::VALUE_ContentIdThird] => ['localize' => self::VALUE_LanguageIdSecond],
+            ],
+        ];
+        $dataHandler = GeneralUtility::makeInstance(DataHandler::class);
+        $dataHandler->start([], $commandMap);
+        $dataHandler->process_cmdmap();
+    }
+
     /**
      * Note: workspaces has an additional variant of this test "localizeContentAfterMovedInLive" that performs
      * the localization of the content element after it has been moved in live first.
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php
index 1ac2a5c0cf6a297aa0731cd5831bd171a4848fe1..b5ef057b5b220d444b093c20b6e37e0ab3ec4c6e 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php
@@ -384,6 +384,15 @@ class ActionTest extends AbstractActionTestCase
             ->setTable(self::TABLE_Content)->setField('header')->setValues('[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1', 'Testing #1'));
     }
 
+    /**
+     * @test
+     */
+    public function localizeContentFromNonDefaultLanguageWithAllContentElements(): void
+    {
+        parent::localizeContentFromNonDefaultLanguageWithAllContentElements();
+        $this->assertAssertionDataSet('localizeContentFromNonDefaultLanguageWithAllContentElements');
+    }
+
     /**
      * @test
      */
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguageFromNonDefaultLanguage.csv b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguageFromNonDefaultLanguage.csv
index 77bf5befd90883a55a12f5cde0c0200d580b920e..f2f7ac96ba8bbf1506f2b18116916be5f09a11d9 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguageFromNonDefaultLanguage.csv
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguageFromNonDefaultLanguage.csv
@@ -22,7 +22,7 @@
 ,300,89,1024,0,1,299,299,299,0,0,0,0,"[Translate to Dansk:] Regular Element #3"
 ,301,89,384,0,1,297,297,297,0,0,0,0,"[Translate to Dansk:] Regular Element #1"
 ,302,89,448,0,2,297,301,301,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1"
-,303,89,1280,0,2,0,300,300,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #3"
+,303,89,480,0,2,0,300,300,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #3"
 "sys_refindex",,,,,,,,,,,,,
 ,"hash","tablename","recuid","field","flexpointer","softref_key","softref_id","sorting","workspace","ref_table","ref_uid","ref_string",
 ,"1130084e4038e95f2d5806b731cd416a","tt_content",300,"l18n_parent",,,,0,0,"tt_content",299,,
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguage.csv b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguage.csv
index 90392514189ee801e377e19a22fea7bb5fa6b677..4cabc77849ccc8e35fb744646b902b31ee9aac29 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguage.csv
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguage.csv
@@ -22,7 +22,7 @@
 ,300,89,1024,0,1,299,299,299,0,0,0,0,"[Translate to Dansk:] Regular Element #3"
 ,301,89,384,0,1,297,297,297,0,0,0,0,"[Translate to Dansk:] Regular Element #1"
 ,302,89,448,0,2,297,301,301,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1"
-,303,89,1280,0,2,299,300,300,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #3"
+,303,89,480,0,2,299,300,300,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #3"
 "sys_refindex",,,,,,,,,,,,,
 ,"hash","tablename","recuid","field","flexpointer","softref_key","softref_id","sorting","workspace","ref_table","ref_uid","ref_string",
 ,"1130084e4038e95f2d5806b731cd416a","tt_content",300,"l18n_parent",,,,0,0,"tt_content",299,,
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguageWSynchronizationDefault.csv b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguageWSynchronizationDefault.csv
index 1eda1afb4d37e94809cf0bccc16bed6b2e9eaf48..82bbb5c7e2dd90b2f9791cacb15c047529f07e11 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguageWSynchronizationDefault.csv
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguageWSynchronizationDefault.csv
@@ -22,7 +22,7 @@
 ,300,89,1024,0,1,299,299,299,0,0,0,0,"Testing #1","{""header"":""parent""}"
 ,301,89,384,0,1,297,297,297,0,0,0,0,"[Translate to Dansk:] Regular Element #1",
 ,302,89,448,0,2,297,301,301,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1",
-,303,89,1280,0,2,299,300,300,0,0,0,0,"Testing #1","{""header"":""parent""}"
+,303,89,480,0,2,299,300,300,0,0,0,0,"Testing #1","{""header"":""parent""}"
 "sys_refindex",,,,,,,,,,,,,,
 ,"hash","tablename","recuid","field","flexpointer","softref_key","softref_id","sorting","workspace","ref_table","ref_uid","ref_string",,
 ,"1130084e4038e95f2d5806b731cd416a","tt_content",300,"l18n_parent",,,,0,0,"tt_content",299,,,
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguageWSynchronizationSource.csv b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguageWSynchronizationSource.csv
index b4c6a63745c425386ba02af341b461d21e23852e..d005ef963d1a0a977342ebf1f42f020334bf8a38 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguageWSynchronizationSource.csv
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguageWSynchronizationSource.csv
@@ -22,7 +22,7 @@
 ,300,89,1024,0,1,299,299,299,0,0,0,0,"Testing #1","{""header"":""parent""}"
 ,301,89,384,0,1,297,297,297,0,0,0,0,"[Translate to Dansk:] Regular Element #1",
 ,302,89,448,0,2,297,301,301,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1",
-,303,89,1280,0,2,299,300,300,0,0,0,0,"Testing #1","{""header"":""source""}"
+,303,89,480,0,2,299,300,300,0,0,0,0,"Testing #1","{""header"":""source""}"
 "sys_refindex",,,,,,,,,,,,,,
 ,"hash","tablename","recuid","field","flexpointer","softref_key","softref_id","sorting","workspace","ref_table","ref_uid","ref_string",,
 ,"1130084e4038e95f2d5806b731cd416a","tt_content",300,"l18n_parent",,,,0,0,"tt_content",299,,,
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguageWithAllContentElements.csv b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguageWithAllContentElements.csv
new file mode 100644
index 0000000000000000000000000000000000000000..4234f8cb209ae54992788fbe1a439c2a7b008dc0
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguageWithAllContentElements.csv
@@ -0,0 +1,43 @@
+"pages",,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","sys_language_uid","l10n_parent","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","title","slug",
+,1,0,256,0,0,0,0,0,0,0,0,"FunctionalTest","/",
+,50,0,512,0,0,0,0,0,0,0,0,"Second Root Page","/",
+,51,50,128,0,0,0,0,0,0,0,0,"DataHandlerTest in second tree","/data-handler",
+,52,51,128,0,0,0,0,0,0,0,0,"Relations in second tree","/data-handler/relations",
+,88,1,256,0,0,0,0,0,0,0,0,"DataHandlerTest","/data-handler",
+,89,88,256,0,0,0,0,0,0,0,0,"Relations","/data-handler/relations",
+,90,88,512,0,0,0,0,0,0,0,0,"Target","/data-handler/target",
+,91,88,256,0,1,89,0,0,0,0,0,"[Translate to Dansk:] Relations","/data-handler/translate-to-dansk-relations",
+,92,88,256,0,2,89,0,0,0,0,0,"[Translate to Deutsch:] Relations","/data-handler/translate-to-deutsch-relations",
+"sys_language",,,,,,,,,,,,,,
+,"uid","pid","hidden","title","flag",,,,,,,,,
+,1,0,0,"Dansk","dk",,,,,,,,,
+,2,0,0,"Deutsch","de",,,,,,,,,
+"tt_content",,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","sys_language_uid","l18n_parent","l10n_source","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","header","bodytext"
+,296,88,256,0,0,0,0,0,0,0,0,0,"Regular Element #0",
+,297,89,384,0,0,0,0,0,0,0,0,0,"Regular Element #1",
+,298,89,512,0,0,0,0,0,0,0,0,0,"Regular Element #2",
+,299,89,768,0,0,0,0,0,0,0,0,0,"Regular Element #3",
+# Next 3 are deleted to not disturb "localize many records on this page"
+,300,89,1024,1,1,299,299,299,0,0,0,0,"[Translate to Dansk:] Regular Element #3",
+,301,89,384,1,1,297,297,297,0,0,0,0,"[Translate to Dansk:] Regular Element #1",
+,302,89,448,1,2,297,301,301,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1",
+,303,89,448,0,1,297,297,297,0,0,0,0,"[Translate to Dansk:] Regular Element #1",
+,304,89,480,0,1,298,298,298,0,0,0,0,"[Translate to Dansk:] Regular Element #2",
+,305,89,496,0,1,299,299,299,0,0,0,0,"[Translate to Dansk:] Regular Element #3",
+,306,89,464,0,2,297,303,303,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1",
+# The point is here: sorting of 307 is calculated as "after" of 306 - it's actually lower than sorting of source 304
+,307,89,472,0,2,298,304,304,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #2",
+# The point is here: sorting of 308 is calculated as "after" of 307 - it's actually lower than sorting of source 305
+,308,89,476,0,2,299,305,305,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #3",
+"sys_refindex",,,,,,,,,,,,,,
+,"hash","tablename","recuid","field","flexpointer","softref_key","softref_id","sorting","workspace","ref_table","ref_uid","ref_string",,
+,"583b9974d1df1d9efb695cdabfe53a73","pages",91,"l10n_parent",,,,0,0,"pages",89,,,
+,"2a42323931078b2842779bd9446e8152","pages",92,"l10n_parent",,,,0,0,"pages",89,,,
+,"65715d319d6e2557ef567590d3147606","tt_content",303,"l18n_parent",,,,0,0,"tt_content",297,,,
+,"9284c2437ea4aa81c7a500fa332c87de","tt_content",304,"l18n_parent",,,,0,0,"tt_content",298,,,
+,"4b7a1808402da33b274d18be1dab407d","tt_content",305,"l18n_parent",,,,0,0,"tt_content",299,,,
+,"dfa52a0320de59c02ffb64881c849498","tt_content",306,"l18n_parent",,,,0,0,"tt_content",297,,,
+,"6e757d756cab07522a5072d8b60fae5d","tt_content",307,"l18n_parent",,,,0,0,"tt_content",298,,,
+,"39547f04497337fd8ae72984033f39ad","tt_content",308,"l18n_parent",,,,0,0,"tt_content",299,,,
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php
index 76fd2401ac0990a4326b9c70e3fb2ae6b929ea0e..673d4f2a48ca38c072c2bbbde7a4a1dd7b815a61 100644
--- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php
@@ -351,6 +351,16 @@ class ActionTest extends AbstractActionTestCase
             ->setTable(self::TABLE_Content)->setField('header')->setValues('[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1', '[Translate to Deutsch:] [Translate to Dansk:] Regular Element #3'));
     }
 
+    /**
+     * @test
+     * Test does not make sense for Publish, PublishAll and Discard
+     */
+    public function localizeContentFromNonDefaultLanguageWithAllContentElements(): void
+    {
+        parent::localizeContentFromNonDefaultLanguageWithAllContentElements();
+        $this->assertAssertionDataSet('localizeContentFromNonDefaultLanguageWithAllContentElements');
+    }
+
     /**
      * @test
      */
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguageFromNonDefaultLanguage.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguageFromNonDefaultLanguage.csv
index 0455c49e132cfc62cd77cf0ed1d18a4d9c005a74..b312dcbfe1916fd6d4c345d43ad992b8547e460c 100644
--- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguageFromNonDefaultLanguage.csv
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguageFromNonDefaultLanguage.csv
@@ -30,7 +30,7 @@
 ,311,90,512,0,1,0,310,310,0,0,0,0,"[Translate to Dansk:] Regular Element #10",,,,
 ,312,90,768,0,2,0,311,311,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #10",,,,
 ,320,89,512,0,0,0,0,298,2,2,0,298,"Regular Element #2",,,,
-,321,89,1280,0,2,0,300,300,1,1,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #3",,,,
+,321,89,480,0,2,0,300,300,1,1,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #3",,,,
 "sys_refindex",,,,,,,,,,,,,,,,,
 ,"hash","tablename","recuid","field","flexpointer","softref_key","softref_id","sorting","workspace","ref_table","ref_uid","ref_string",,,,,
 ,"01a3ce8c4e3b2bb1aa439dc29081f996","sys_workspace_stage",1,"responsible_persons",,,,0,0,"be_users",3,,,,,,
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguage.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguage.csv
index 0211344dc1bfdb933b187e6fa7603bd2f5ec10c5..d6830406270f31bae4f30c3be797caac7c3c72ee 100644
--- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguage.csv
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguage.csv
@@ -30,7 +30,7 @@
 ,311,90,512,0,1,0,310,310,0,0,0,0,"[Translate to Dansk:] Regular Element #10",,,,
 ,312,90,768,0,2,0,311,311,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #10",,,,
 ,320,89,512,0,0,0,0,298,2,2,0,298,"Regular Element #2",,,,
-,321,89,1280,0,2,299,300,300,1,1,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #3",,,,
+,321,89,480,0,2,299,300,300,1,1,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #3",,,,
 "sys_refindex",,,,,,,,,,,,,,,,,
 ,"hash","tablename","recuid","field","flexpointer","softref_key","softref_id","sorting","workspace","ref_table","ref_uid","ref_string",,,,,
 ,"01a3ce8c4e3b2bb1aa439dc29081f996","sys_workspace_stage",1,"responsible_persons",,,,0,0,"be_users",3,,,,,,
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguageWithAllContentElements.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguageWithAllContentElements.csv
new file mode 100644
index 0000000000000000000000000000000000000000..7f1e6885c587a8f51b9c95a04e70d91dc00613b0
--- /dev/null
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/localizeContentFromNonDefaultLanguageWithAllContentElements.csv
@@ -0,0 +1,50 @@
+"pages",,,,,,,,,,,,,,,,,
+,"uid","pid","sorting","hidden","deleted","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","title","slug",,,,,
+,1,0,256,0,0,0,0,0,0,0,"FunctionalTest","/",,,,,
+,88,1,256,0,0,0,0,0,0,0,"DataHandlerTest","/data-handler",,,,,
+,89,88,256,0,0,0,0,0,0,0,"Relations","/data-handler/relations",,,,,
+,90,88,512,0,0,0,0,0,0,0,"Target","/data-handler/target",,,,,
+,91,88,256,0,0,0,1,1,0,0,"[Translate to Dansk:] Relations","/data-handler/translate-to-dansk-relations",,,,,
+,92,88,256,0,0,0,1,1,0,0,"[Translate to Deutsch:] Relations","/data-handler/translate-to-deutsch-relations",,,,,
+"sys_workspace",,,,,,,,,,,,,,,,,
+,"uid","pid","deleted","title","adminusers","members","db_mountpoints","file_mountpoints","freeze","live_edit","publish_access","custom_stages","stagechg_notification","edit_notification_defaults","edit_allow_notificaton_settings","publish_notification_defaults","publish_allow_notificaton_settings"
+,1,0,0,"Workspace #1",,,,,0,0,0,0,0,0,0,0,0
+,2,0,0,"Workspace #2",,,,,0,0,0,0,0,0,0,0,0
+"sys_workspace_stage",,,,,,,,,,,,,,,,,
+,"uid","pid","tstamp","deleted","sorting","title","responsible_persons","default_mailcomment","parentid","parenttable","notification_defaults","allow_notificaton_settings",,,,,
+,1,0,1290048921,0,1,"Stage 1","be_users_3",,1,"sys_workspace",0,0,,,,,
+"sys_language",,,,,,,,,,,,,,,,,
+,"uid","pid","hidden","title","flag",,,,,,,,,,,,
+,1,0,0,"Dansk","dk",,,,,,,,,,,,
+,2,0,0,"Deutsch","de",,,,,,,,,,,,
+"tt_content",,,,,,,,,,,,,,,,,
+,"uid","pid","sorting","hidden","deleted","sys_language_uid","l18n_parent","l10n_source","t3_origuid","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","header","bodytext",,
+,296,88,256,0,0,0,0,0,0,0,0,0,0,"Regular Element #0",,,
+,297,89,384,0,0,0,0,0,0,0,0,0,0,"Regular Element #1",,,
+,298,89,512,0,0,0,0,0,0,0,0,0,0,"Regular Element #2",,,
+,299,89,768,0,0,0,0,0,0,0,0,0,0,"Regular Element #3",,,
+,300,89,1024,0,1,1,299,299,299,0,0,0,0,"[Translate to Dansk:] Regular Element #3",,,
+,301,89,384,0,1,1,297,297,297,0,0,0,0,"[Translate to Dansk:] Regular Element #1",,,
+,302,89,448,0,1,2,297,301,301,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1",,,
+,310,90,256,0,0,0,0,0,0,0,0,0,0,"Regular Element #10",,,
+,311,90,512,0,0,1,0,310,310,0,0,0,0,"[Translate to Dansk:] Regular Element #10",,,
+,312,90,768,0,0,2,0,311,311,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #10",,,
+,320,89,512,0,0,0,0,0,298,2,2,0,298,"Regular Element #2",,,
+,321,89,448,0,0,1,297,297,297,1,1,0,0,"[Translate to Dansk:] Regular Element #1",,,
+,322,89,480,0,0,1,298,298,298,1,1,0,0,"[Translate to Dansk:] Regular Element #2",,,
+,323,89,1024,0,0,1,299,299,299,1,1,0,0,"[Translate to Dansk:] Regular Element #3",,,
+,324,89,464,0,0,2,297,321,321,1,1,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1",,,
+,325,89,472,0,0,2,298,322,322,1,1,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #2",,,
+,326,89,476,0,0,2,299,323,323,1,1,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #3",,,
+"sys_refindex",,,,,,,,,,,,,,,,,
+,"hash","tablename","recuid","field","flexpointer","softref_key","softref_id","sorting","workspace","ref_table","ref_uid","ref_string",,,,,
+,"25426f92d44dd2ccf416108462b446e3","sys_workspace",1,"custom_stages",,,,0,0,"sys_workspace_stage",1,,,,,,
+,"01a3ce8c4e3b2bb1aa439dc29081f996","sys_workspace_stage",1,"responsible_persons",,,,0,0,"be_users",3,,,,,,
+,"560d1e59437906ce8ecd07cbb8b61650","pages",91,"l10n_parent",,,,0,1,"pages",89,,,,,,
+,"81bed3ff81afcdb0e38d7f99f497b890","pages",92,"l10n_parent",,,,0,1,"pages",89,,,,,,
+,"fdb6e478a8d93feb8e72c69a247168a1","tt_content",321,"l18n_parent",,,,0,1,"tt_content",297,,,,,,
+,"df7fdfe7276be741fca5a5e773024b52","tt_content",322,"l18n_parent",,,,0,1,"tt_content",298,,,,,,
+,"e8bd04d607dea16b8b8c7d66aff17147","tt_content",323,"l18n_parent",,,,0,1,"tt_content",299,,,,,,
+,"1f9987878a01ed8224ede3f306c5d4a6","tt_content",324,"l18n_parent",,,,0,1,"tt_content",297,,,,,,
+,"de7eac7853f12111b70a791c11584f2f","tt_content",325,"l18n_parent",,,,0,1,"tt_content",298,,,,,,
+,"41032051e8f704ee0596e196752f97a3","tt_content",326,"l18n_parent",,,,0,1,"tt_content",299,,,,,,
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/copyContentToLanguageFromNonDefaultLanguage.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/copyContentToLanguageFromNonDefaultLanguage.csv
index 4d55f700270a44c660c2b587ba1a060aaa0f808c..fb7ac6f3a8f3bafe3dda004ee96077b2a74cf4cb 100644
--- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/copyContentToLanguageFromNonDefaultLanguage.csv
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/copyContentToLanguageFromNonDefaultLanguage.csv
@@ -30,7 +30,7 @@
 ,311,90,512,0,1,0,310,310,0,0,0,0,"[Translate to Dansk:] Regular Element #10",,,,
 ,312,90,768,0,2,0,311,311,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #10",,,,
 ,320,89,512,0,0,0,0,298,2,2,0,298,"Regular Element #2",,,,
-,321,89,1280,0,2,0,300,300,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #3",,,,
+,321,89,480,0,2,0,300,300,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #3",,,,
 "sys_refindex",,,,,,,,,,,,,,,,,
 ,"hash","tablename","recuid","field","flexpointer","softref_key","softref_id","sorting","workspace","ref_table","ref_uid","ref_string",,,,,
 ,"01a3ce8c4e3b2bb1aa439dc29081f996","sys_workspace_stage",1,"responsible_persons",,,,0,0,"be_users",3,,,,,,
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/localizeContentFromNonDefaultLanguage.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/localizeContentFromNonDefaultLanguage.csv
index 69ac5f68d926083341c0b8cc90bb89a35968e4c2..43f53c37354e3f8e576f6653af7de04ee33ab796 100644
--- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/localizeContentFromNonDefaultLanguage.csv
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/localizeContentFromNonDefaultLanguage.csv
@@ -30,7 +30,7 @@
 ,311,90,512,0,1,0,310,310,0,0,0,0,"[Translate to Dansk:] Regular Element #10",,,,
 ,312,90,768,0,2,0,311,311,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #10",,,,
 ,320,89,512,0,0,0,0,298,2,2,0,298,"Regular Element #2",,,,
-,321,89,1280,0,2,299,300,300,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #3",,,,
+,321,89,480,0,2,299,300,300,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #3",,,,
 "sys_refindex",,,,,,,,,,,,,,,,,
 ,"hash","tablename","recuid","field","flexpointer","softref_key","softref_id","sorting","workspace","ref_table","ref_uid","ref_string",,,,,
 ,"01a3ce8c4e3b2bb1aa439dc29081f996","sys_workspace_stage",1,"responsible_persons",,,,0,0,"be_users",3,,,,,,
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/DataSet/copyContentToLanguageFromNonDefaultLanguage.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/DataSet/copyContentToLanguageFromNonDefaultLanguage.csv
index 59f625936138f69679cb9b7e6d573ea289a6b5fa..da18dadffdd56e030dbc24351d201f69e960ea37 100644
--- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/DataSet/copyContentToLanguageFromNonDefaultLanguage.csv
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/DataSet/copyContentToLanguageFromNonDefaultLanguage.csv
@@ -29,7 +29,7 @@
 ,311,90,512,0,1,0,310,310,0,0,0,0,"[Translate to Dansk:] Regular Element #10",,,,
 ,312,90,768,0,2,0,311,311,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #10",,,,
 ,320,89,512,0,0,0,0,298,2,2,0,298,"Regular Element #2",,,,
-,321,89,1280,0,2,0,300,300,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #3",,,,
+,321,89,480,0,2,0,300,300,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #3",,,,
 "sys_refindex",,,,,,,,,,,,,,,,,
 ,"hash","tablename","recuid","field","flexpointer","softref_key","softref_id","sorting","workspace","ref_table","ref_uid","ref_string",,,,,
 ,"01a3ce8c4e3b2bb1aa439dc29081f996","sys_workspace_stage",1,"responsible_persons",,,,0,0,"be_users",3,,,,,,
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/DataSet/localizeContentFromNonDefaultLanguage.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/DataSet/localizeContentFromNonDefaultLanguage.csv
index 212c7d4504042ef234c206b83cff278545cdd473..fe5e56933f9166e6b01d63d5ffd84cce81d04e17 100644
--- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/DataSet/localizeContentFromNonDefaultLanguage.csv
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/DataSet/localizeContentFromNonDefaultLanguage.csv
@@ -29,7 +29,7 @@
 ,311,90,512,0,1,0,310,310,0,0,0,0,"[Translate to Dansk:] Regular Element #10",,,,
 ,312,90,768,0,2,0,311,311,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #10",,,,
 ,320,89,512,0,0,0,0,298,2,2,0,298,"Regular Element #2",,,,
-,321,89,1280,0,2,299,300,300,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #3",,,,
+,321,89,480,0,2,299,300,300,0,0,0,0,"[Translate to Deutsch:] [Translate to Dansk:] Regular Element #3",,,,
 "sys_refindex",,,,,,,,,,,,,,,,,
 ,"hash","tablename","recuid","field","flexpointer","softref_key","softref_id","sorting","workspace","ref_table","ref_uid","ref_string",,,,,
 ,"01a3ce8c4e3b2bb1aa439dc29081f996","sys_workspace_stage",1,"responsible_persons",,,,0,0,"be_users",3,,,,,,