diff --git a/components/testing_framework/core/FunctionalTestCase.php b/components/testing_framework/core/FunctionalTestCase.php
index e8618b34890fae57d9ec5d2cc5f939cd52010586..867df0064e09adee10cb7d376fd76e8304861b7b 100644
--- a/components/testing_framework/core/FunctionalTestCase.php
+++ b/components/testing_framework/core/FunctionalTestCase.php
@@ -365,8 +365,9 @@ abstract class FunctionalTestCase extends BaseTestCase
         foreach ($typoScriptFiles as $typoScriptFile) {
             $templateFields['config'] .= '<INCLUDE_TYPOSCRIPT: source="FILE:' . $typoScriptFile . '">' . LF;
         }
-
-        GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('sys_template')->insert(
+        $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('sys_template');
+        $connection->delete('sys_template', ['pid' => $pageId]);
+        $connection->insert(
             'sys_template',
             $templateFields
         );
diff --git a/typo3/sysext/backend/Classes/Controller/Page/LocalizationController.php b/typo3/sysext/backend/Classes/Controller/Page/LocalizationController.php
index 5e4e864d2af75a9d78ec969fcd194edcaaef0993..66b2fb5e9f48f09e883abbf45ed844c9d8702152 100644
--- a/typo3/sysext/backend/Classes/Controller/Page/LocalizationController.php
+++ b/typo3/sysext/backend/Classes/Controller/Page/LocalizationController.php
@@ -226,22 +226,8 @@ class LocalizationController
                     'localize' => $destLanguageId
                 ];
             } else {
-                $previousUid = $this->localizationRepository->getPreviousLocalizedRecordUid(
-                    'tt_content',
-                    $currentUid,
-                    $pageId,
-                    $srcLanguageId,
-                    $destLanguageId
-                );
                 $cmd['tt_content'][$currentUid] = [
-                    'copy' => [
-                        'action' => 'paste',
-                        'target' => -$previousUid,
-                        'update' => [
-                            'sys_language_uid' => $destLanguageId,
-                            'l18n_parent' => 0
-                        ]
-                    ]
+                    'copyToLanguage' => $destLanguageId,
                 ];
             }
         }
diff --git a/typo3/sysext/backend/Tests/Functional/Controller/Page/LocalizationControllerTest.php b/typo3/sysext/backend/Tests/Functional/Controller/Page/LocalizationControllerTest.php
index 0d30f133425218f7ae1a9d7715da94fb4c791df4..243cd9311a8c890fba518deaf9e5b69343bab0d1 100644
--- a/typo3/sysext/backend/Tests/Functional/Controller/Page/LocalizationControllerTest.php
+++ b/typo3/sysext/backend/Tests/Functional/Controller/Page/LocalizationControllerTest.php
@@ -181,19 +181,19 @@ class LocalizationControllerTest extends \TYPO3\CMS\Components\TestingFramework\
                 'pid' => 1,
                 'sys_language_uid' => 2,
                 'l18n_parent' => 0,
-                'header' => 'Test content 1 (copy 1)',
+                'header' => '[Translate to Deutsch:] Test content 1',
             ],
             [
                 'pid' => 1,
                 'sys_language_uid' => 2,
                 'l18n_parent' => 0,
-                'header' => 'Test content 2 (copy 1)',
+                'header' => '[Translate to Deutsch:] Test content 2',
             ],
             [
                 'pid' => 1,
                 'sys_language_uid' => 2,
                 'l18n_parent' => 0,
-                'header' => 'Test content 3 (copy 1)',
+                'header' => '[Translate to Deutsch:] Test content 3',
             ],
         ];
         $queryBuilder = (new ConnectionPool())->getQueryBuilderForTable('tt_content');
@@ -239,19 +239,19 @@ class LocalizationControllerTest extends \TYPO3\CMS\Components\TestingFramework\
                 'pid' => 1,
                 'sys_language_uid' => 2,
                 'l18n_parent' => 0,
-                'header' => 'Test indhold 1 (copy 1)',
+                'header' => '[Translate to Deutsch:] Test indhold 1',
             ],
             [
                 'pid' => 1,
                 'sys_language_uid' => 2,
                 'l18n_parent' => 0,
-                'header' => 'Test indhold 2 (copy 1)',
+                'header' => '[Translate to Deutsch:] Test indhold 2',
             ],
             [
                 'pid' => 1,
                 'sys_language_uid' => 2,
                 'l18n_parent' => 0,
-                'header' => 'Test indhold 3 (copy 1)',
+                'header' => '[Translate to Deutsch:] Test indhold 3',
             ],
         ];
         $queryBuilder = (new ConnectionPool())->getQueryBuilderForTable('tt_content');
@@ -321,25 +321,25 @@ class LocalizationControllerTest extends \TYPO3\CMS\Components\TestingFramework\
                 'pid' => 1,
                 'sys_language_uid' => 1,
                 'l18n_parent' => 0,
-                'header' => 'Test content 1 (copy 1)',
+                'header' => '[Translate to Dansk:] Test content 1',
             ],
             [
                 'pid' => 1,
                 'sys_language_uid' => 1,
                 'l18n_parent' => 0,
-                'header' => 'Test content 2 (copy 1)',
+                'header' => '[Translate to Dansk:] Test content 2.5',
             ],
             [
                 'pid' => 1,
                 'sys_language_uid' => 1,
                 'l18n_parent' => 0,
-                'header' => 'Test content 2.5 (copy 1)',
+                'header' => '[Translate to Dansk:] Test content 2',
             ],
             [
                 'pid' => 1,
                 'sys_language_uid' => 1,
                 'l18n_parent' => 0,
-                'header' => 'Test content 3 (copy 1)',
+                'header' => '[Translate to Dansk:] Test content 3',
             ],
         ];
         $queryBuilder = (new ConnectionPool())->getQueryBuilderForTable('tt_content');
diff --git a/typo3/sysext/core/Classes/DataHandling/DataHandler.php b/typo3/sysext/core/Classes/DataHandling/DataHandler.php
index 38e03d6e9bc0ed9ac725aa08ac2bf9e5d31b33ab..c58ebf3255cd6195fbf43fbbf5419e0162276589 100644
--- a/typo3/sysext/core/Classes/DataHandling/DataHandler.php
+++ b/typo3/sysext/core/Classes/DataHandling/DataHandler.php
@@ -137,6 +137,15 @@ class DataHandler
      */
     public $dontProcessTransformations = false;
 
+    /**
+     * Will distinguish between translations (with parent) and localizations (without parent) while still using the same methods to copy the records
+     * TRUE: translation of a record connected to the default language
+     * FALSE: localization of a record without connection to the default language
+     *
+     * @var bool
+     */
+    protected $useTransOrigPointerField = true;
+
     /**
      * TRUE: (traditional) Updates when record is saved. For flexforms, updates if change is made to the localized value.
      * FALSE: Will not update anything.
@@ -3214,6 +3223,11 @@ class DataHandler
                                 $procId = $this->copyMappingArray[$table][$id];
                                 break;
                             case 'localize':
+                                $this->useTransOrigPointerField = true;
+                                $this->localize($table, $id, $value);
+                                break;
+                            case 'copyToLanguage':
+                                $this->useTransOrigPointerField = false;
                                 $this->localize($table, $id, $value);
                                 break;
                             case 'inlineLocalizeSynchronize':
@@ -4487,7 +4501,10 @@ class DataHandler
         }
 
         $this->registerNestedElementCall($table, $uid, 'localize');
-        if ((!$GLOBALS['TCA'][$table]['ctrl']['languageField'] || !$GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'] || $table === 'pages_language_overay') && $table !== 'pages') {
+        if ((!$GLOBALS['TCA'][$table]['ctrl']['languageField']
+                || !$GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField']
+                || $table === 'pages_language_overay')
+            && $table !== 'pages') {
             if ($this->enableLogging) {
                 $this->newlog('Localization failed; "languageField" and "transOrigPointerField" must be defined for the table!', 1);
             }
@@ -4567,8 +4584,12 @@ class DataHandler
         // If the translated record is a default language record, set it's uid as localization parent of the new record.
         // If translating from any other language, no override is needed; we just can copy the localization parent of
         // the original record (which is pointing to the correspondent default language record) to the new record.
-        if ($row[$GLOBALS['TCA'][$table]['ctrl']['languageField']] === 0 || $table === 'pages') {
+        // In copy / free mode the TransOrigPointer field is always set to 0, as no connection to the localization parent is wanted in that case.
+        if (($this->useTransOrigPointerField && (int)$row[$GLOBALS['TCA'][$table]['ctrl']['languageField']] === 0)
+            || $table === 'pages') {
             $overrideValues[$GLOBALS['TCA'][$Ttable]['ctrl']['transOrigPointerField']] = $uid;
+        } elseif (!$this->useTransOrigPointerField) {
+            $overrideValues[$GLOBALS['TCA'][$Ttable]['ctrl']['transOrigPointerField']] = 0;
         }
         // Copy the type (if defined in both tables) from the original record so that translation has same type as original record
         if (isset($GLOBALS['TCA'][$table]['ctrl']['type']) && isset($GLOBALS['TCA'][$Ttable]['ctrl']['type'])) {
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Important-75400-NewDataHandlerCommandCopyToLanguage.rst b/typo3/sysext/core/Documentation/Changelog/master/Important-75400-NewDataHandlerCommandCopyToLanguage.rst
new file mode 100644
index 0000000000000000000000000000000000000000..f7cdaf2e87bba749d424cb09f49d561443e81f55
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Important-75400-NewDataHandlerCommandCopyToLanguage.rst
@@ -0,0 +1,21 @@
+.. include:: ../../Includes.txt
+
+============================================================
+Important: #75400 - New DataHandler command 'copyToLanguage'
+============================================================
+
+See :issue:`75400`
+
+Description
+===========
+
+A new DataHandler command 'copyToLanguage' has been introduced. It behaves like 'localize' command
+(both record and child records are copied to given language), but does not set transOrigPointerField fields (e.g. l10n_parent).
+
+The 'copyToLanguage' command should be used when localizing records in the "Free Mode". This command is used when localizing
+content elements using translation wizard's "Copy" strategy.
+
+The 'localize' DataHandler command should be used when translating records in "Connected Mode" (strict translation of records from the default language).
+This command is used when selecting "Translate" strategy in content elements translation wizard.
+
+.. index:: PHP-API
\ No newline at end of file
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/AbstractActionTestCase.php b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/AbstractActionTestCase.php
index f0f349f896521b0ac5a9b345f6b342301e2ffd0b..3ff620b532cc09e9aa2dfc0215ea8cdd5e9c7f75 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/AbstractActionTestCase.php
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/AbstractActionTestCase.php
@@ -87,6 +87,15 @@ abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\D
         $this->recordIds['copiedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
     }
 
+    /**
+     * @see Modify/DataSet/copyContentToLanguage.csv
+     */
+    public function copyContentToLanguage()
+    {
+        $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId);
+        $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
+    }
+
     /**
      * @see Modify/DataSet/localizeContent.csv
      */
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/ActionTest.php b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/ActionTest.php
index 45574a1dfa7c74b44cfa237e60bac74eab7899e8..20846c352f8740b4537b5ee4c4ac4200da8119a7 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/ActionTest.php
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/ActionTest.php
@@ -78,6 +78,28 @@ class ActionTest extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\FAL\Abstr
             ->setTable(self::TABLE_FileReference)->setField('title')->setValues('This is Kasper', 'Taken at T3BOARD'));
     }
 
+    /**
+     * @test
+     * @see DataSet/copyContentToLanguage.csv
+     */
+    public function copyContentToLanguage()
+    {
+        parent::copyContentToLanguage();
+        $this->assertAssertionDataSet('copyContentToLanguage');
+
+        $this->setUpFrontendRootPage(1, [
+            'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts',
+            'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts'
+        ]);
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections();
+        $this->assertThat($responseSections, $this->getRequestSectionHasRecordConstraint()
+            ->setTable(self::TABLE_Content)->setField('header')->setValues('[Translate to Dansk:] Regular Element #2'));
+
+        $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
+            ->setRecordIdentifier(self::TABLE_Content . ':' . $this->recordIds['localizedContentId'])->setRecordField(self::FIELD_ContentImage)
+            ->setTable(self::TABLE_FileReference)->setField('title')->setValues('[Translate to Dansk:] This is Kasper', '[Translate to Dansk:] Taken at T3BOARD'));
+    }
+
     /**
      * @test
      * @see DataSet/localizeContent.csv
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/copyContentToLanguage.csv b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/copyContentToLanguage.csv
new file mode 100644
index 0000000000000000000000000000000000000000..d8f00fd9b64360eead1bda0dae873b03f2bb0b07
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/copyContentToLanguage.csv
@@ -0,0 +1,13 @@
+sys_file_reference,,,,,,,,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link
+,126,89,128,0,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,
+,127,89,64,0,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,
+,128,89,32,0,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,Taken at T3BOARD,,,
+,129,89,16,0,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,This is Kasper,,,
+,130,89,48,0,1,0,0,0,0,0,0,0,21,332,tt_content,image,1,sys_file,[Translate to Dansk:] Taken at T3BOARD,,,
+,131,89,24,0,1,0,0,0,0,0,0,0,1,332,tt_content,image,2,sys_file,[Translate to Dansk:] This is Kasper,,,
+tt_content,,,,,,,,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,,,,,,,,
+,330,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,2,,,,,,,,
+,331,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,2,,,,,,,,
+,332,89,768,0,1,0,331,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,2,,,,,,,,
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Framework/ActionService.php b/typo3/sysext/core/Tests/Functional/DataHandling/Framework/ActionService.php
index 2dd6cf8d4953b9550742e78a1f9f5626bed5b8f2..7638fe67244f90c4ce38d4a69b490843274caf27 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/Framework/ActionService.php
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Framework/ActionService.php
@@ -304,6 +304,27 @@ class ActionService
         return $this->dataHandler->copyMappingArray;
     }
 
+    /**
+     * @param string $tableName
+     * @param int $uid
+     * @param int $languageId
+     * @return array
+     */
+    public function copyRecordToLanguage($tableName, $uid, $languageId)
+    {
+        $commandMap = [
+            $tableName => [
+                $uid => [
+                    'copyToLanguage' => $languageId,
+                ],
+            ],
+        ];
+        $this->createDataHandler();
+        $this->dataHandler->start([], $commandMap);
+        $this->dataHandler->process_cmdmap();
+        return $this->dataHandler->copyMappingArray;
+    }
+
     /**
      * @param string $tableName
      * @param int $uid
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Group/AbstractActionTestCase.php b/typo3/sysext/core/Tests/Functional/DataHandling/Group/AbstractActionTestCase.php
index 2a2821ace64dfc08041b3325dd07878f736b55da..b0950f8fc0e181a9c29debf561a4c9534afa93a1 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/Group/AbstractActionTestCase.php
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Group/AbstractActionTestCase.php
@@ -187,6 +187,26 @@ abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\D
         $this->recordIds['copiedElementId'] = $newTableIds[self::TABLE_Element][self::VALUE_ElementIdFirst];
     }
 
+    /**
+     * @test
+     * @see DataSet/copyContentToLanguageOfRelation.csv
+     */
+    public function copyContentToLanguageOfRelation()
+    {
+        $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId);
+        $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
+    }
+
+    /**
+     * @test
+     * @see DataSet/copyElementToLanguageOfRelation.csv
+     */
+    public function copyElementToLanguageOfRelation()
+    {
+        $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Element, self::VALUE_ElementIdFirst, self::VALUE_LanguageId);
+        $this->recordIds['localizedElementId'] = $newTableIds[self::TABLE_Element][self::VALUE_ElementIdFirst];
+    }
+
     /**
      * @test
      * @see DataSet/localizeContentOfRelation.csv
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/ActionTest.php b/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/ActionTest.php
index 43898cc0f464f3837ea72d7d0d04e8cf0d174d35..658b4074d91fffe083dda993cba2ec86466f51d8 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/ActionTest.php
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/ActionTest.php
@@ -235,6 +235,42 @@ class ActionTest extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\Group\Abs
             ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #1 (copy 1)'));
     }
 
+    /**
+     * @test
+     * @see DataSet/copyContentToLanguageOfRelation.csv
+     */
+    public function copyContentToLanguageOfRelation()
+    {
+        parent::copyContentToLanguageOfRelation();
+        $this->assertAssertionDataSet('copyContentToLanguageOfRelation');
+
+        $this->setUpFrontendRootPage(1, [
+            'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts',
+            'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts'
+        ]);
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections();
+        $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
+            ->setRecordIdentifier(self::TABLE_Content . ':' . $this->recordIds['localizedContentId'])->setRecordField(self::FIELD_ContentElement)
+            ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #2', 'Element #3'));
+    }
+
+    /**
+     * @test
+     * @see DataSet/copyElementToLanguageOfRelation.csv
+     */
+    public function copyElementToLanguageOfRelation()
+    {
+        parent::copyElementToLanguageOfRelation();
+        $this->assertAssertionDataSet('copyElementToLanguageOfRelation');
+
+        //in this case the translated element is orphaned (no CE with relation to it, and it has no l10n_parent)
+        //so on frontend there is no change.
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections();
+        $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
+            ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField(self::FIELD_ContentElement)
+            ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #1', 'Element #2'));
+    }
+
     /**
      * @test
      * @see DataSet/localizeContentOfRelation.csv
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/DataSet/copyContentToLanguageOfRelation.csv b/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/DataSet/copyContentToLanguageOfRelation.csv
new file mode 100644
index 0000000000000000000000000000000000000000..09d8f0ab555249b3cfdf4cb32b4d143de5250b54
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/DataSet/copyContentToLanguageOfRelation.csv
@@ -0,0 +1,16 @@
+pages,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,,,
+,1,0,256,0,0,0,0,0,0,0,FunctionalTest,,,
+,88,1,256,0,0,0,0,0,0,0,DataHandlerTest,,,
+,89,88,256,0,0,0,0,0,0,0,Relations,,,
+,90,88,512,0,0,0,0,0,0,0,Target,,,
+tt_content,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_testdatahandler_group
+,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,"1,2"
+,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,"2,3"
+,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,"2,3"
+tx_testdatahandler_element,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,
+,1,89,256,0,0,0,0,0,0,0,0,0,Element #1,
+,2,89,512,0,0,0,0,0,0,0,0,0,Element #2,
+,3,89,768,0,0,0,0,0,0,0,0,0,Element #3,
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/DataSet/copyElementToLanguageOfRelation.csv b/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/DataSet/copyElementToLanguageOfRelation.csv
new file mode 100644
index 0000000000000000000000000000000000000000..6b65cc820c893723b4128393ccbcea72aab18613
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Group/Modify/DataSet/copyElementToLanguageOfRelation.csv
@@ -0,0 +1,16 @@
+pages,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,,,
+,1,0,256,0,0,0,0,0,0,0,FunctionalTest,,,
+,88,1,256,0,0,0,0,0,0,0,DataHandlerTest,,,
+,89,88,256,0,0,0,0,0,0,0,Relations,,,
+,90,88,512,0,0,0,0,0,0,0,Target,,,
+tt_content,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_testdatahandler_group
+,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,"1,2"
+,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,"2,3"
+tx_testdatahandler_element,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,
+,1,89,256,0,0,0,0,0,0,0,0,0,Element #1,
+,2,89,512,0,0,0,0,0,0,0,0,0,Element #2,
+,3,89,768,0,0,0,0,0,0,0,0,0,Element #3,
+,4,89,384,0,1,0,1,0,0,0,0,0,[Translate to Dansk:] Element #1,
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/AbstractActionTestCase.php b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/AbstractActionTestCase.php
index 2add0411b493d9b7b456808fa5f030848344925e..2358441b5655afbbd3e9601472dec701a76257f2 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/AbstractActionTestCase.php
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/AbstractActionTestCase.php
@@ -98,6 +98,54 @@ abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\D
         $this->recordIds['newContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
     }
 
+    /**
+     * @see DataSet/copyParentContentToLanguageKeep.csv
+     */
+    public function copyParentContentToLanguageInKeepMode()
+    {
+        $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'keep';
+        $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = false;
+        $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = false;
+        $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId);
+        $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
+    }
+
+    /**
+     * @see DataSet/copyParentContentToLanguageWAllChildrenKeep.csv
+     */
+    public function copyParentContentToLanguageWithAllChildrenInKeepMode()
+    {
+        $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'keep';
+        $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = true;
+        $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = true;
+        $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId);
+        $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
+    }
+
+    /**
+     * @see DataSet/copyParentContentToLanguageSelect.csv
+     */
+    public function copyParentContentToLanguageInSelectMode()
+    {
+        $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'select';
+        $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = false;
+        $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = false;
+        $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId);
+        $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
+    }
+
+    /**
+     * @see DataSet/copyParentContentToLanguageWAllChildrenSelect.csv
+     */
+    public function copyParentContentToLanguageWithAllChildrenInSelectMode()
+    {
+        $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'select';
+        $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = true;
+        $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = true;
+        $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId);
+        $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
+    }
+
     /**
      * @see DataSet/localizeParentContentKeep.csv
      */
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/ActionTest.php b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/ActionTest.php
index 6a8021ef50c7db8e551d3b64385236a2b94529bf..6f660422061b171bd41a7f09f6813b5f24f0bc49 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/ActionTest.php
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/ActionTest.php
@@ -103,6 +103,70 @@ class ActionTest extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\IRRE\CSV\
             ->setTable(self::TABLE_Hotel)->setField('title')->setValues('Hotel #1'));
     }
 
+    /**
+     * @test
+     * @see DataSet/copyParentContentToLanguageKeep.csv
+     */
+    public function copyParentContentToLanguageInKeepMode()
+    {
+        parent::copyParentContentToLanguageInKeepMode();
+        $this->assertAssertionDataSet('copyParentContentToLanguageKeep');
+
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections();
+        $this->assertThat($responseSections, $this->getRequestSectionStructureDoesNotHaveRecordConstraint()
+            ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentHotel)
+            ->setTable(self::TABLE_Hotel)->setField('title')->setValues('[Translate to Dansk:] Hotel #1'));
+    }
+
+    /**
+     * @test
+     * @see DataSet/copyParentContentToLanguageWAllChildrenKeep.csv
+     */
+    public function copyParentContentToLanguageWithAllChildrenInKeepMode()
+    {
+        parent::copyParentContentToLanguageWithAllChildrenInKeepMode();
+        $this->assertAssertionDataSet('copyParentContentToLanguageWAllChildrenKeep');
+
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections();
+        $this->assertThat($responseSections, $this->getRequestSectionStructureDoesNotHaveRecordConstraint()
+            ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentHotel)
+            ->setTable(self::TABLE_Hotel)->setField('title')->setValues('[Translate to Dansk:] Hotel #1'));
+    }
+
+    /**
+     * @test
+     * @see DataSet/copyParentContentToLanguageSelect.csv
+     */
+    public function copyParentContentToLanguageInSelectMode()
+    {
+        parent::copyParentContentToLanguageInSelectMode();
+        $this->assertAssertionDataSet('copyParentContentToLanguageSelect');
+
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections();
+        $this->assertThat($responseSections, $this->getRequestSectionStructureDoesNotHaveRecordConstraint()
+            ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentHotel)
+            ->setTable(self::TABLE_Hotel)->setField('title')->setValues('[Translate to Dansk:] Hotel #1'));
+    }
+
+    /**
+     * @test
+     * @see DataSet/copyParentContentToLanguageWAllChildrenSelect.csv
+     */
+    public function copyParentContentToLanguageWithAllChildrenInSelectMode()
+    {
+        parent::copyParentContentToLanguageWithAllChildrenInSelectMode();
+        $this->assertAssertionDataSet('copyParentContentToLanguageWAllChildrenSelect');
+
+        $this->setUpFrontendRootPage(1, [
+            'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts',
+            'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts'
+        ]);
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections();
+        $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
+            ->setRecordIdentifier(self::TABLE_Content . ':' . $this->recordIds['localizedContentId'])->setRecordField(self::FIELD_ContentHotel)
+            ->setTable(self::TABLE_Hotel)->setField('title')->setValues('[Translate to Dansk:] Hotel #1'));
+    }
+
     /**
      * @test
      * @see DataSet/localizeParentContentKeep.csv
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageKeep.csv b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageKeep.csv
new file mode 100644
index 0000000000000000000000000000000000000000..2d93e8e62875e77d9f49380b8ce12642451ad180
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageKeep.csv
@@ -0,0 +1,25 @@
+tt_content,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,5
+,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,
+tx_irretutorial_1ncsv_hotel,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,0,Hotel #1,"5,6"
+,4,89,128,0,0,0,0,0,0,0,0,0,Hotel #2,7
+,5,89,64,0,0,0,0,0,0,0,0,0,Hotel #1,8
+tx_irretutorial_1ncsv_offer,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,0,Offer #1.1,"7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,0,Offer #1.2,"10,11"
+,7,89,64,0,0,0,0,0,0,0,0,0,Offer #2.1,12
+,8,89,32,0,0,0,0,0,0,0,0,0,Offer #1.1,13
+tx_irretutorial_1ncsv_price,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,
+,7,89,256,0,0,0,0,0,0,0,0,0,Price #1.1.1,
+,8,89,128,0,0,0,0,0,0,0,0,0,Price #1.1.2,
+,9,89,64,0,0,0,0,0,0,0,0,0,Price #1.1.3,
+,10,89,32,0,0,0,0,0,0,0,0,0,Price #1.2.1,
+,11,89,16,0,0,0,0,0,0,0,0,0,Price #1.2.2,
+,12,89,8,0,0,0,0,0,0,0,0,0,Price #2.1.1,
+,13,89,4,0,0,0,0,0,0,0,0,0,Price #1.1.1,
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageSelect.csv b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageSelect.csv
new file mode 100644
index 0000000000000000000000000000000000000000..2d93e8e62875e77d9f49380b8ce12642451ad180
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageSelect.csv
@@ -0,0 +1,25 @@
+tt_content,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,5
+,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,
+tx_irretutorial_1ncsv_hotel,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,0,Hotel #1,"5,6"
+,4,89,128,0,0,0,0,0,0,0,0,0,Hotel #2,7
+,5,89,64,0,0,0,0,0,0,0,0,0,Hotel #1,8
+tx_irretutorial_1ncsv_offer,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,0,Offer #1.1,"7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,0,Offer #1.2,"10,11"
+,7,89,64,0,0,0,0,0,0,0,0,0,Offer #2.1,12
+,8,89,32,0,0,0,0,0,0,0,0,0,Offer #1.1,13
+tx_irretutorial_1ncsv_price,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,
+,7,89,256,0,0,0,0,0,0,0,0,0,Price #1.1.1,
+,8,89,128,0,0,0,0,0,0,0,0,0,Price #1.1.2,
+,9,89,64,0,0,0,0,0,0,0,0,0,Price #1.1.3,
+,10,89,32,0,0,0,0,0,0,0,0,0,Price #1.2.1,
+,11,89,16,0,0,0,0,0,0,0,0,0,Price #1.2.2,
+,12,89,8,0,0,0,0,0,0,0,0,0,Price #2.1.1,
+,13,89,4,0,0,0,0,0,0,0,0,0,Price #1.1.1,
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageWAllChildrenKeep.csv b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageWAllChildrenKeep.csv
new file mode 100644
index 0000000000000000000000000000000000000000..2d93e8e62875e77d9f49380b8ce12642451ad180
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageWAllChildrenKeep.csv
@@ -0,0 +1,25 @@
+tt_content,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,5
+,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,
+tx_irretutorial_1ncsv_hotel,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,0,Hotel #1,"5,6"
+,4,89,128,0,0,0,0,0,0,0,0,0,Hotel #2,7
+,5,89,64,0,0,0,0,0,0,0,0,0,Hotel #1,8
+tx_irretutorial_1ncsv_offer,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,0,Offer #1.1,"7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,0,Offer #1.2,"10,11"
+,7,89,64,0,0,0,0,0,0,0,0,0,Offer #2.1,12
+,8,89,32,0,0,0,0,0,0,0,0,0,Offer #1.1,13
+tx_irretutorial_1ncsv_price,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,
+,7,89,256,0,0,0,0,0,0,0,0,0,Price #1.1.1,
+,8,89,128,0,0,0,0,0,0,0,0,0,Price #1.1.2,
+,9,89,64,0,0,0,0,0,0,0,0,0,Price #1.1.3,
+,10,89,32,0,0,0,0,0,0,0,0,0,Price #1.2.1,
+,11,89,16,0,0,0,0,0,0,0,0,0,Price #1.2.2,
+,12,89,8,0,0,0,0,0,0,0,0,0,Price #2.1.1,
+,13,89,4,0,0,0,0,0,0,0,0,0,Price #1.1.1,
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageWAllChildrenSelect.csv b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageWAllChildrenSelect.csv
new file mode 100644
index 0000000000000000000000000000000000000000..8f6125a0aa63f1a2cbf81f29b6ea4be7d4e67405
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/CSV/Modify/DataSet/copyParentContentToLanguageWAllChildrenSelect.csv
@@ -0,0 +1,28 @@
+tt_content,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,5
+,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,6
+tx_irretutorial_1ncsv_hotel,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,0,Hotel #1,"5,6"
+,4,89,128,0,0,0,0,0,0,0,0,0,Hotel #2,7
+,5,89,64,0,0,0,0,0,0,0,0,0,Hotel #1,8
+,6,89,96,0,1,0,5,0,0,0,0,0,[Translate to Dansk:] Hotel #1,9
+tx_irretutorial_1ncsv_offer,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,0,Offer #1.1,"7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,0,Offer #1.2,"10,11"
+,7,89,64,0,0,0,0,0,0,0,0,0,Offer #2.1,12
+,8,89,32,0,0,0,0,0,0,0,0,0,Offer #1.1,13
+,9,89,48,0,1,0,8,0,0,0,0,0,[Translate to Dansk:] Offer #1.1,14
+tx_irretutorial_1ncsv_price,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,
+,7,89,256,0,0,0,0,0,0,0,0,0,Price #1.1.1,
+,8,89,128,0,0,0,0,0,0,0,0,0,Price #1.1.2,
+,9,89,64,0,0,0,0,0,0,0,0,0,Price #1.1.3,
+,10,89,32,0,0,0,0,0,0,0,0,0,Price #1.2.1,
+,11,89,16,0,0,0,0,0,0,0,0,0,Price #1.2.2,
+,12,89,8,0,0,0,0,0,0,0,0,0,Price #2.1.1,
+,13,89,4,0,0,0,0,0,0,0,0,0,Price #1.1.1,
+,14,89,6,0,1,0,13,0,0,0,0,0,[Translate to Dansk:] Price #1.1.1,
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/AbstractActionTestCase.php b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/AbstractActionTestCase.php
index 11b2846e5aabb91383424939f02290956e2ce9a5..c56f82f74a70a6825829b8b76a22321846040763 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/AbstractActionTestCase.php
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/AbstractActionTestCase.php
@@ -104,6 +104,54 @@ abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\D
         $this->recordIds['newContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
     }
 
+    /**
+     * @see DataSet/copyParentContentToLanguageKeep.csv
+     */
+    public function copyParentContentToLanguageInKeepMode()
+    {
+        $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'keep';
+        $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = false;
+        $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = false;
+        $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId);
+        $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
+    }
+
+    /**
+     * @see DataSet/copyParentContentToLanguageWAllChildrenKeep.csv
+     */
+    public function copyParentContentToLanguageWithAllChildrenInKeepMode()
+    {
+        $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'keep';
+        $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = true;
+        $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = true;
+        $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId);
+        $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
+    }
+
+    /**
+     * @see DataSet/copyParentContentToLanguageSelect.csv
+     */
+    public function copyParentContentToLanguageInSelectMode()
+    {
+        $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'select';
+        $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = false;
+        $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = false;
+        $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId);
+        $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
+    }
+
+    /**
+     * @see DataSet/copyParentContentToLanguageWAllChildrenSelect.csv
+     */
+    public function copyParentContentToLanguageWithAllChildrenInSelectMode()
+    {
+        $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'select';
+        $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = true;
+        $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = true;
+        $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId);
+        $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
+    }
+
     /**
      * @see DataSet/localizeParentContentKeep.csv
      */
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/ActionTest.php b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/ActionTest.php
index fd6f768ebbf504fbc113c0a244cdbad34103ad24..cd400f7b78c3723d6e94f05b1ad0205e0bdd838d 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/ActionTest.php
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/ActionTest.php
@@ -103,6 +103,71 @@ class ActionTest extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\IRRE\Fore
             ->setTable(self::TABLE_Hotel)->setField('title')->setValues('Hotel #1'));
     }
 
+    /**
+     * @test
+     * @see DataSet/copyParentContentToLanguageKeep.csv
+     */
+    public function copyParentContentToLanguageInKeepMode()
+    {
+        parent::copyParentContentToLanguageInKeepMode();
+        $this->assertAssertionDataSet('copyParentContentToLanguageKeep');
+
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections('Default', 'Extbase:list()');
+        $this->assertThat($responseSections, $this->getRequestSectionStructureDoesNotHaveRecordConstraint()
+            ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentHotel)
+            ->setTable(self::TABLE_Hotel)->setField('title')->setValues('[Translate to Dansk:] Hotel #1'));
+    }
+
+    /**
+     * @test
+     * @see DataSet/copyParentContentToLanguageWAllChildrenKeep.csv
+     */
+    public function copyParentContentToLanguageWithAllChildrenInKeepMode()
+    {
+        parent::copyParentContentToLanguageWithAllChildrenInKeepMode();
+        $this->assertAssertionDataSet('copyParentContentToLanguageWAllChildrenKeep');
+
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections('Default', 'Extbase:list()');
+        $this->assertThat($responseSections, $this->getRequestSectionStructureDoesNotHaveRecordConstraint()
+            ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentHotel)
+            ->setTable(self::TABLE_Hotel)->setField('title')->setValues('[Translate to Dansk:] Hotel #1'));
+    }
+
+    /**
+     * @test
+     * @see DataSet/copyParentContentToLanguageSelect.csv
+     */
+    public function copyParentContentToLanguageInSelectMode()
+    {
+        parent::copyParentContentToLanguageInSelectMode();
+        $this->assertAssertionDataSet('copyParentContentToLanguageSelect');
+
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections('Default', 'Extbase:list()');
+        $this->assertThat($responseSections, $this->getRequestSectionStructureDoesNotHaveRecordConstraint()
+            ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentHotel)
+            ->setTable(self::TABLE_Hotel)->setField('title')->setValues('[Translate to Dansk:] Hotel #1'));
+    }
+
+    /**
+     * @test
+     * @see DataSet/copyParentContentToLanguageWAllChildrenSelect.csv
+     */
+    public function copyParentContentToLanguageWithAllChildrenInSelectMode()
+    {
+        parent::copyParentContentToLanguageWithAllChildrenInSelectMode();
+        $this->assertAssertionDataSet('copyParentContentToLanguageWAllChildrenSelect');
+
+        $this->setUpFrontendRootPage(1, [
+            'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts',
+            'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/ExtbaseJsonRenderer.ts',
+            'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts'
+        ]);
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections('Default', 'Extbase:list()');
+        $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
+            ->setRecordIdentifier(self::TABLE_Content . ':' . $this->recordIds['localizedContentId'])->setRecordField(self::FIELD_ContentHotel)
+            ->setTable(self::TABLE_Hotel)->setField('title')->setValues('[Translate to Dansk:] Hotel #1'));
+    }
+
     /**
      * @test
      * @see DataSet/localizeParentContentKeep.csv
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageKeep.csv b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageKeep.csv
new file mode 100644
index 0000000000000000000000000000000000000000..db72c88d9af64f7b682fe2bf44e21e4784a49fa5
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageKeep.csv
@@ -0,0 +1,25 @@
+tt_content,,,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_irretutorial_1nff_hotels,,,
+,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,2,,,
+,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,1,,,
+,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,0,,,
+tx_irretutorial_1nff_hotel,,,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,offers
+,3,89,1,0,0,0,0,0,0,0,0,0,Hotel #1,297,tt_content,,2
+,4,89,2,0,0,0,0,0,0,0,0,0,Hotel #2,297,tt_content,,1
+,5,89,1,0,0,0,0,0,0,0,0,0,Hotel #1,298,tt_content,,1
+tx_irretutorial_1nff_offer,,,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,prices
+,5,89,1,0,0,0,0,0,0,0,0,0,Offer #1.1,3,tx_irretutorial_1nff_hotel,,3
+,6,89,2,0,0,0,0,0,0,0,0,0,Offer #1.2,3,tx_irretutorial_1nff_hotel,,2
+,7,89,1,0,0,0,0,0,0,0,0,0,Offer #2.1,4,tx_irretutorial_1nff_hotel,,1
+,8,89,1,0,0,0,0,0,0,0,0,0,Offer #1.1,5,tx_irretutorial_1nff_hotel,,1
+tx_irretutorial_1nff_price,,,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,
+,7,89,1,0,0,0,0,0,0,0,0,0,Price #1.1.1,5,tx_irretutorial_1nff_offer,,
+,8,89,2,0,0,0,0,0,0,0,0,0,Price #1.1.2,5,tx_irretutorial_1nff_offer,,
+,9,89,3,0,0,0,0,0,0,0,0,0,Price #1.1.3,5,tx_irretutorial_1nff_offer,,
+,10,89,1,0,0,0,0,0,0,0,0,0,Price #1.2.1,6,tx_irretutorial_1nff_offer,,
+,11,89,2,0,0,0,0,0,0,0,0,0,Price #1.2.2,6,tx_irretutorial_1nff_offer,,
+,12,89,1,0,0,0,0,0,0,0,0,0,Price #2.1.1,7,tx_irretutorial_1nff_offer,,
+,13,89,1,0,0,0,0,0,0,0,0,0,Price #1.1.1,8,tx_irretutorial_1nff_offer,,
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageSelect.csv b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageSelect.csv
new file mode 100644
index 0000000000000000000000000000000000000000..db72c88d9af64f7b682fe2bf44e21e4784a49fa5
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageSelect.csv
@@ -0,0 +1,25 @@
+tt_content,,,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_irretutorial_1nff_hotels,,,
+,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,2,,,
+,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,1,,,
+,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,0,,,
+tx_irretutorial_1nff_hotel,,,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,offers
+,3,89,1,0,0,0,0,0,0,0,0,0,Hotel #1,297,tt_content,,2
+,4,89,2,0,0,0,0,0,0,0,0,0,Hotel #2,297,tt_content,,1
+,5,89,1,0,0,0,0,0,0,0,0,0,Hotel #1,298,tt_content,,1
+tx_irretutorial_1nff_offer,,,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,prices
+,5,89,1,0,0,0,0,0,0,0,0,0,Offer #1.1,3,tx_irretutorial_1nff_hotel,,3
+,6,89,2,0,0,0,0,0,0,0,0,0,Offer #1.2,3,tx_irretutorial_1nff_hotel,,2
+,7,89,1,0,0,0,0,0,0,0,0,0,Offer #2.1,4,tx_irretutorial_1nff_hotel,,1
+,8,89,1,0,0,0,0,0,0,0,0,0,Offer #1.1,5,tx_irretutorial_1nff_hotel,,1
+tx_irretutorial_1nff_price,,,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,
+,7,89,1,0,0,0,0,0,0,0,0,0,Price #1.1.1,5,tx_irretutorial_1nff_offer,,
+,8,89,2,0,0,0,0,0,0,0,0,0,Price #1.1.2,5,tx_irretutorial_1nff_offer,,
+,9,89,3,0,0,0,0,0,0,0,0,0,Price #1.1.3,5,tx_irretutorial_1nff_offer,,
+,10,89,1,0,0,0,0,0,0,0,0,0,Price #1.2.1,6,tx_irretutorial_1nff_offer,,
+,11,89,2,0,0,0,0,0,0,0,0,0,Price #1.2.2,6,tx_irretutorial_1nff_offer,,
+,12,89,1,0,0,0,0,0,0,0,0,0,Price #2.1.1,7,tx_irretutorial_1nff_offer,,
+,13,89,1,0,0,0,0,0,0,0,0,0,Price #1.1.1,8,tx_irretutorial_1nff_offer,,
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageWAllChildrenKeep.csv b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageWAllChildrenKeep.csv
new file mode 100644
index 0000000000000000000000000000000000000000..db72c88d9af64f7b682fe2bf44e21e4784a49fa5
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageWAllChildrenKeep.csv
@@ -0,0 +1,25 @@
+tt_content,,,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_irretutorial_1nff_hotels,,,
+,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,2,,,
+,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,1,,,
+,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,0,,,
+tx_irretutorial_1nff_hotel,,,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,offers
+,3,89,1,0,0,0,0,0,0,0,0,0,Hotel #1,297,tt_content,,2
+,4,89,2,0,0,0,0,0,0,0,0,0,Hotel #2,297,tt_content,,1
+,5,89,1,0,0,0,0,0,0,0,0,0,Hotel #1,298,tt_content,,1
+tx_irretutorial_1nff_offer,,,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,prices
+,5,89,1,0,0,0,0,0,0,0,0,0,Offer #1.1,3,tx_irretutorial_1nff_hotel,,3
+,6,89,2,0,0,0,0,0,0,0,0,0,Offer #1.2,3,tx_irretutorial_1nff_hotel,,2
+,7,89,1,0,0,0,0,0,0,0,0,0,Offer #2.1,4,tx_irretutorial_1nff_hotel,,1
+,8,89,1,0,0,0,0,0,0,0,0,0,Offer #1.1,5,tx_irretutorial_1nff_hotel,,1
+tx_irretutorial_1nff_price,,,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,
+,7,89,1,0,0,0,0,0,0,0,0,0,Price #1.1.1,5,tx_irretutorial_1nff_offer,,
+,8,89,2,0,0,0,0,0,0,0,0,0,Price #1.1.2,5,tx_irretutorial_1nff_offer,,
+,9,89,3,0,0,0,0,0,0,0,0,0,Price #1.1.3,5,tx_irretutorial_1nff_offer,,
+,10,89,1,0,0,0,0,0,0,0,0,0,Price #1.2.1,6,tx_irretutorial_1nff_offer,,
+,11,89,2,0,0,0,0,0,0,0,0,0,Price #1.2.2,6,tx_irretutorial_1nff_offer,,
+,12,89,1,0,0,0,0,0,0,0,0,0,Price #2.1.1,7,tx_irretutorial_1nff_offer,,
+,13,89,1,0,0,0,0,0,0,0,0,0,Price #1.1.1,8,tx_irretutorial_1nff_offer,,
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageWAllChildrenSelect.csv b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageWAllChildrenSelect.csv
new file mode 100644
index 0000000000000000000000000000000000000000..6c3a11be6a2533156bcce1312cf5c9a98ab12c61
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/IRRE/ForeignField/Modify/DataSet/copyParentContentToLanguageWAllChildrenSelect.csv
@@ -0,0 +1,28 @@
+tt_content,,,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_irretutorial_1nff_hotels,,,
+,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,2,,,
+,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,1,,,
+,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,1,,,
+tx_irretutorial_1nff_hotel,,,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,offers
+,3,89,512,0,0,0,0,0,0,0,0,0,Hotel #1,297,tt_content,,2
+,4,89,1280,0,0,0,0,0,0,0,0,0,Hotel #2,297,tt_content,,1
+,5,89,768,0,0,0,0,0,0,0,0,0,Hotel #1,298,tt_content,,1
+,6,89,1,0,1,0,5,0,0,0,0,0,[Translate to Dansk:] Hotel #1,299,tt_content,,1
+tx_irretutorial_1nff_offer,,,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,prices
+,5,89,512,0,0,0,0,0,0,0,0,0,Offer #1.1,3,tx_irretutorial_1nff_hotel,,3
+,6,89,1536,0,0,0,0,0,0,0,0,0,Offer #1.2,3,tx_irretutorial_1nff_hotel,,2
+,7,89,768,0,0,0,0,0,0,0,0,0,Offer #2.1,4,tx_irretutorial_1nff_hotel,,1
+,8,89,1024,0,0,0,0,0,0,0,0,0,Offer #1.1,5,tx_irretutorial_1nff_hotel,,1
+,9,89,1,0,1,0,8,0,0,0,0,0,[Translate to Dansk:] Offer #1.1,6,tx_irretutorial_1nff_hotel,,1
+tx_irretutorial_1nff_price,,,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parentid,parenttable,parentidentifier,
+,7,89,512,0,0,0,0,0,0,0,0,0,Price #1.1.1,5,tx_irretutorial_1nff_offer,,
+,8,89,1792,0,0,0,0,0,0,0,0,0,Price #1.1.2,5,tx_irretutorial_1nff_offer,,
+,9,89,2304,0,0,0,0,0,0,0,0,0,Price #1.1.3,5,tx_irretutorial_1nff_offer,,
+,10,89,768,0,0,0,0,0,0,0,0,0,Price #1.2.1,6,tx_irretutorial_1nff_offer,,
+,11,89,2048,0,0,0,0,0,0,0,0,0,Price #1.2.2,6,tx_irretutorial_1nff_offer,,
+,12,89,1024,0,0,0,0,0,0,0,0,0,Price #2.1.1,7,tx_irretutorial_1nff_offer,,
+,13,89,1280,0,0,0,0,0,0,0,0,0,Price #1.1.1,8,tx_irretutorial_1nff_offer,,
+,14,89,1,0,1,0,13,0,0,0,0,0,[Translate to Dansk:] Price #1.1.1,9,tx_irretutorial_1nff_offer,,
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/AbstractActionTestCase.php b/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/AbstractActionTestCase.php
index eb631138ab068f981b4aec297c5996b98f125571..68f554d16a9b3b7dd1261f3df5061773f4d23647 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/AbstractActionTestCase.php
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/AbstractActionTestCase.php
@@ -149,6 +149,24 @@ abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\D
         $this->actionService->copyRecord(self::TABLE_Category, self::VALUE_CategoryIdFirst, 0);
     }
 
+    /**
+     * @test
+     * @see DataSet/copyContentToLanguageOfRelation.csv
+     */
+    public function copyContentToLanguageOfRelation()
+    {
+        $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId);
+    }
+
+    /**
+     * @test
+     * @see DataSet/copyCategoryToLanguageOfRelation.csv
+     */
+    public function copyCategoryToLanguageOfRelation()
+    {
+        $this->actionService->copyRecordToLanguage(self::TABLE_Category, self::VALUE_CategoryIdFirst, self::VALUE_LanguageId);
+    }
+
     /**
      * @test
      * @see DataSet/Assertion/localizeContentRecordOfCategoryRelation.csv
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/ActionTest.php b/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/ActionTest.php
index 0952b44e1c9c1d80c129afcd5f935ca2b10cde3e..5cb843501b65a1eff9fdf21598ce7a5118a34c19 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/ActionTest.php
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/ActionTest.php
@@ -181,6 +181,37 @@ class ActionTest extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\ManyToMan
             ->setTable(self::TABLE_Category)->setField('title')->setValues('Category A', 'Category A (copy 1)'));
     }
 
+    /**
+     * @test
+     * @see DataSet/copyContentToLanguageOfRelation.csv
+     */
+    public function copyContentToLanguageOfRelation()
+    {
+        parent::copyContentToLanguageOfRelation();
+        $this->assertAssertionDataSet('copyContentToLanguageOfRelation');
+
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections();
+        $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
+            ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField('categories')
+            ->setTable(self::TABLE_Category)->setField('title')->setValues('Category B', 'Category C'));
+    }
+
+    /**
+     * @test
+     * @see DataSet/copyCategoryToLanguageOfRelation.csv
+     */
+    public function copyCategoryToLanguageOfRelation()
+    {
+        parent::copyCategoryToLanguageOfRelation();
+        $this->assertAssertionDataSet('copyCategoryToLanguageOfRelation');
+        //in this case the translated element is orphaned (no CE with relation to it, and it has no l10n_parent)
+        //so on frontend there is no change.
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections();
+        $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
+            ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField('categories')
+            ->setTable(self::TABLE_Category)->setField('title')->setValues('Category A', 'Category B'));
+    }
+
     /**
      * @test
      * @see DataSet/Assertion/localizeContentRecordOfCategoryRelation.csv
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/DataSet/copyCategoryToLanguageOfRelation.csv b/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/DataSet/copyCategoryToLanguageOfRelation.csv
new file mode 100644
index 0000000000000000000000000000000000000000..cbe0c0936e357435818ca4557be0bfd50f1ade5c
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/DataSet/copyCategoryToLanguageOfRelation.csv
@@ -0,0 +1,18 @@
+sys_category,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parent,items
+,28,0,256,0,0,0,0,0,0,0,0,0,Category A,0,0
+,29,0,512,0,0,0,0,0,0,0,0,0,Category B,0,0
+,30,0,768,0,0,0,0,0,0,0,0,0,Category C,0,0
+,31,0,1024,0,0,0,0,0,0,0,0,0,Category A.A,28,0
+,32,0,384,0,1,0,28,0,0,0,0,0,[Translate to Dansk:] Category A,0,1
+sys_category_record_mm,,,,,,,,,,,,,,,
+,uid_local,uid_foreign,tablenames,sorting,sorting_foreign,fieldname,,,,,,,,,
+,28,297,tt_content,0,1,categories,,,,,,,,,
+,29,297,tt_content,0,2,categories,,,,,,,,,
+,29,298,tt_content,0,1,categories,,,,,,,,,
+,30,298,tt_content,0,2,categories,,,,,,,,,
+,32,297,tt_content,1,0,categories,,,,,,,,,
+tt_content,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,categories
+,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,0,2
+,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,0,2
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/DataSet/copyContentToLanguageOfRelation.csv b/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/DataSet/copyContentToLanguageOfRelation.csv
new file mode 100644
index 0000000000000000000000000000000000000000..ee791d7e59cc85b1dfca7fdb8c6b46ce16177abf
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/ManyToMany/Modify/DataSet/copyContentToLanguageOfRelation.csv
@@ -0,0 +1,19 @@
+sys_category,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,parent,items
+,28,0,256,0,0,0,0,0,0,0,0,0,Category A,0,0
+,29,0,512,0,0,0,0,0,0,0,0,0,Category B,0,0
+,30,0,768,0,0,0,0,0,0,0,0,0,Category C,0,0
+,31,0,1024,0,0,0,0,0,0,0,0,0,Category A.A,28,0
+sys_category_record_mm,,,,,,,,,,,,,,,
+,uid_local,uid_foreign,tablenames,sorting,sorting_foreign,fieldname,,,,,,,,,
+,28,297,tt_content,0,1,categories,,,,,,,,,
+,29,297,tt_content,0,2,categories,,,,,,,,,
+,29,298,tt_content,0,1,categories,,,,,,,,,
+,30,298,tt_content,0,2,categories,,,,,,,,,
+,29,299,tt_content,0,1,categories,,,,,,,,,
+,30,299,tt_content,0,2,categories,,,,,,,,,
+tt_content,,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,categories
+,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,0,2
+,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,0,2
+,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,0,2
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php
index 7e60842997afc257683af3bd39f70953150220de..946f3ee24f3f7333c53c54a7ec257a670db8d9d6 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php
@@ -99,6 +99,15 @@ abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\D
         $this->actionService->copyRecord(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_PageId);
     }
 
+    /**
+     * @test
+     * @see DataSet/copyContentToLanguage.csv
+     */
+    public function copyContentToLanguage()
+    {
+        $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_LanguageId);
+    }
+
     /**
      * @test
      * @see DataSet/copyPasteContent.csv
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 3938ab1cee97dc3b982489414a28ce016d7923a0..522ed0b864a0378b691c2f86d3b6e1fa55a69998 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php
@@ -100,6 +100,24 @@ class ActionTest extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\Regular\A
             ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #2 (copy 1)'));
     }
 
+    /**
+     * @test
+     * @see DataSet/copyContentToLanguage.csv
+     */
+    public function copyContentToLanguage()
+    {
+        parent::copyContentToLanguage();
+        $this->assertAssertionDataSet('copyContentToLanguage');
+
+        $this->setUpFrontendRootPage(1, [
+            'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts',
+            'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts'
+        ]);
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections();
+        $this->assertThat($responseSections, $this->getRequestSectionHasRecordConstraint()
+            ->setTable(self::TABLE_Content)->setField('header')->setValues('[Translate to Dansk:] Regular Element #3', '[Translate to Dansk:] Regular Element #2'));
+    }
+
     /**
      * @test
      * @see DataSet/Assertion/copyContentRecord.csv
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguage.csv b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguage.csv
new file mode 100644
index 0000000000000000000000000000000000000000..aed7e6b670cdcddb0526f9188292399ea9d67a9f
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguage.csv
@@ -0,0 +1,7 @@
+tt_content,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header
+,297,89,256,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
+,300,89,1024,0,1,299,299,0,0,0,0,0,[Translate to Dansk:] Regular Element #3
+,301,89,640,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Select/AbstractActionTestCase.php b/typo3/sysext/core/Tests/Functional/DataHandling/Select/AbstractActionTestCase.php
index 9e83e8341034f6afc804b32058a8e5d00b51fead..554063e1f198e69c5d56616c3df1a5a02d802901 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/Select/AbstractActionTestCase.php
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Select/AbstractActionTestCase.php
@@ -187,6 +187,26 @@ abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\D
         $this->recordIds['copiedElementId'] = $newTableIds[self::TABLE_Element][self::VALUE_ElementIdFirst];
     }
 
+    /**
+     * @test
+     * @see DataSet/copyContentToLanguageOfRelation.csv
+     */
+    public function copyContentToLanguageOfRelation()
+    {
+        $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId);
+        $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
+    }
+
+    /**
+     * @test
+     * @see DataSet/copyElementToLanguageOfRelation.csv
+     */
+    public function copyElementToLanguageOfRelation()
+    {
+        $newTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Element, self::VALUE_ElementIdFirst, self::VALUE_LanguageId);
+        $this->recordIds['localizedElementId'] = $newTableIds[self::TABLE_Element][self::VALUE_ElementIdFirst];
+    }
+
     /**
      * @test
      * @see DataSet/localizeContentOfRelation.csv
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/ActionTest.php b/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/ActionTest.php
index fe4cb68feb8ed53317c80922193c45946174b747..e5a7d0a76e37db7665db39aeb0ffbe211f8c55b3 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/ActionTest.php
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/ActionTest.php
@@ -234,6 +234,38 @@ class ActionTest extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\Select\Ab
             ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #1 (copy 1)'));
     }
 
+    /**
+     * @test
+     * @see DataSet/copyContentToLanguageOfRelation.csv
+     */
+    public function copyContentToLanguageOfRelation()
+    {
+        parent::copyContentToLanguageOfRelation();
+        $this->assertAssertionDataSet('copyContentToLanguageOfRelation');
+
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections();
+        $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
+            ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentElement)
+            ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #2', 'Element #3'));
+    }
+
+    /**
+     * @test
+     * @see DataSet/copyElementToLanguageOfRelation.csv
+     */
+    public function copyElementToLanguageOfRelation()
+    {
+        parent::copyElementToLanguageOfRelation();
+        $this->assertAssertionDataSet('copyElementToLanguageOfRelation');
+
+        //in this case the translated element is orphaned (no CE with relation to it, and it has no l10n_parent)
+        //so on frontend there is no change.
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections();
+        $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
+            ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField(self::FIELD_ContentElement)
+            ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #1', 'Element #2'));
+    }
+
     /**
      * @test
      * @see DataSet/localizeContentOfRelation.csv
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/DataSet/copyContentToLanguageOfRelation.csv b/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/DataSet/copyContentToLanguageOfRelation.csv
new file mode 100644
index 0000000000000000000000000000000000000000..a4083d8e5cf70dd7368857ac2142957373247b7c
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/DataSet/copyContentToLanguageOfRelation.csv
@@ -0,0 +1,16 @@
+pages,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,,,
+,1,0,256,0,0,0,0,0,0,0,FunctionalTest,,,
+,88,1,256,0,0,0,0,0,0,0,DataHandlerTest,,,
+,89,88,256,0,0,0,0,0,0,0,Relations,,,
+,90,88,512,0,0,0,0,0,0,0,Target,,,
+tt_content,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_testdatahandler_select
+,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,"1,2"
+,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,"2,3"
+,299,89,768,0,1,0,298,0,0,0,0,0,[Translate to Dansk:] Regular Element #2,"2,3"
+tx_testdatahandler_element,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,
+,1,89,256,0,0,0,0,0,0,0,0,0,Element #1,
+,2,89,512,0,0,0,0,0,0,0,0,0,Element #2,
+,3,89,768,0,0,0,0,0,0,0,0,0,Element #3,
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/DataSet/copyElementToLanguageOfRelation.csv b/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/DataSet/copyElementToLanguageOfRelation.csv
new file mode 100644
index 0000000000000000000000000000000000000000..5c73dd0a7b9af58f3ae57aef967c075c9192aef0
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/Select/Modify/DataSet/copyElementToLanguageOfRelation.csv
@@ -0,0 +1,16 @@
+pages,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,,,
+,1,0,256,0,0,0,0,0,0,0,FunctionalTest,,,
+,88,1,256,0,0,0,0,0,0,0,DataHandlerTest,,,
+,89,88,256,0,0,0,0,0,0,0,Relations,,,
+,90,88,512,0,0,0,0,0,0,0,Target,,,
+tt_content,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,tx_testdatahandler_select
+,297,89,256,0,0,0,0,0,0,0,0,0,Regular Element #1,"1,2"
+,298,89,512,0,0,0,0,0,0,0,0,0,Regular Element #2,"2,3"
+tx_testdatahandler_element,,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,
+,1,89,256,0,0,0,0,0,0,0,0,0,Element #1,
+,2,89,512,0,0,0,0,0,0,0,0,0,Element #2,
+,3,89,768,0,0,0,0,0,0,0,0,0,Element #3,
+,4,89,384,0,1,0,1,0,0,0,0,0,[Translate to Dansk:] Element #1,
diff --git a/typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts b/typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ea342708feac5cbb1d20e5e264e2e5cc11ba6773
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts
@@ -0,0 +1,3 @@
+config {
+	sys_language_overlay = 0
+}
\ No newline at end of file
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php
index 2ecbe792d4f41a73ca058490e3937318ca46f2af..f2f99099734787ba6ad45bd6bb4d2462908a3199 100644
--- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/AbstractActionTestCase.php
@@ -136,6 +136,15 @@ abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\D
         $this->recordIds['copiedContentId'] = $copiedTableIds[self::TABLE_Content][self::VALUE_ContentIdSecond];
     }
 
+    /**
+     * @see DataSet/copyContentToLanguage.csv
+     */
+    public function copyContentToLanguage()
+    {
+        $copiedTableIds = $this->actionService->copyRecordToLanguage(self::TABLE_Content, self::VALUE_ContentIdSecond, self::VALUE_LanguageId);
+        $this->recordIds['localizedContentId'] = $copiedTableIds[self::TABLE_Content][self::VALUE_ContentIdSecond];
+    }
+
     /**
      * @see DataSet/Assertion/localizeContentRecord.csv
      */
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 6b3102ac9b081326ea6b4a82f2e7af4cee165142..f0d7ab3ca2844210dfe2c84a213a9f74840a9a3a 100644
--- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/ActionTest.php
@@ -130,6 +130,24 @@ class ActionTest extends \TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Reg
             ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #2 (copy 1)'));
     }
 
+    /**
+     * @test
+     * @see DataSet/copyContentToLanguage.csv
+     */
+    public function copyContentToLanguage()
+    {
+        parent::copyContentToLanguage();
+        $this->assertAssertionDataSet('copyContentToLanguage');
+
+        $this->setUpFrontendRootPage(1, [
+            'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts',
+            'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts'
+        ]);
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseSections();
+        $this->assertThat($responseSections, $this->getRequestSectionHasRecordConstraint()
+            ->setTable(self::TABLE_Content)->setField('header')->setValues('[Translate to Dansk:] Regular Element #3', '[Translate to Dansk:] Regular Element #2'));
+    }
+
     /**
      * @test
      * @see DataSet/Assertion/localizeContentRecord.csv
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguage.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguage.csv
new file mode 100644
index 0000000000000000000000000000000000000000..bed6fe3cf521c05e3c4b172c55ba9e71141f3073
--- /dev/null
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Modify/DataSet/copyContentToLanguage.csv
@@ -0,0 +1,10 @@
+tt_content,,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3_origuid,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header
+,296,88,256,0,0,0,0,0,0,0,0,0,Regular Element #0
+,297,89,256,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
+,300,89,1024,0,1,299,299,0,0,0,0,0,[Translate to Dansk:] Regular Element #3
+,301,-1,512,0,0,0,298,2,2,0,298,0,Regular Element #2
+,302,89,640,0,1,0,298,1,1,0,0,0,[Translate to Dansk:] Regular Element #2
+,303,-1,640,0,1,0,298,1,-1,0,302,0,[Translate to Dansk:] Regular Element #2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/ActionTest.php b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/ActionTest.php
index ba609c0d519d850768a8ab692ece3b470737e232..c45e70ae543e63bd7e0ded63ef09076cfc807efc 100644
--- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/ActionTest.php
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/ActionTest.php
@@ -148,6 +148,25 @@ class ActionTest extends \TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Reg
             ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #2 (copy 1)'));
     }
 
+    /**
+     * @test
+     * @see DataSet/copyContentToLanguage.csv
+     */
+    public function copyContentToLanguage()
+    {
+        parent::copyContentToLanguage();
+        $this->actionService->publishRecord(self::TABLE_Content, $this->recordIds['localizedContentId']);
+        $this->assertAssertionDataSet('copyContentToLanguage');
+
+        $this->setUpFrontendRootPage(1, [
+            'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts',
+            'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts'
+        ]);
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections();
+        $this->assertThat($responseSections, $this->getRequestSectionHasRecordConstraint()
+            ->setTable(self::TABLE_Content)->setField('header')->setValues('[Translate to Dansk:] Regular Element #3', '[Translate to Dansk:] Regular Element #2'));
+    }
+
     /**
      * @test
      * @see DataSet/Assertion/localizeContentRecord.csv
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/copyContentToLanguage.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/copyContentToLanguage.csv
new file mode 100644
index 0000000000000000000000000000000000000000..5a9a18dae7f22f36e3749d9000ff86d77cab70b4
--- /dev/null
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/Publish/DataSet/copyContentToLanguage.csv
@@ -0,0 +1,9 @@
+tt_content,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header
+,296,88,256,0,0,0,0,0,0,0,0,Regular Element #0
+,297,89,256,0,0,0,0,0,0,0,0,Regular Element #1
+,298,89,512,0,0,0,0,0,0,0,0,Regular Element #2
+,299,89,768,0,0,0,0,0,0,0,0,Regular Element #3
+,300,89,1024,0,1,299,0,0,0,0,0,[Translate to Dansk:] Regular Element #3
+,301,-1,512,0,0,0,2,2,0,298,0,Regular Element #2
+,302,89,640,0,1,0,0,0,0,0,0,[Translate to Dansk:] Regular Element #2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/ActionTest.php b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/ActionTest.php
index 813439d8b307404a0ee0accc84b3f787805072d5..f0cd8289332a31c597e4c4d8e5a39b9fb218d072 100644
--- a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/ActionTest.php
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/ActionTest.php
@@ -137,6 +137,25 @@ class ActionTest extends \TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Reg
             ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #2 (copy 1)'));
     }
 
+    /**
+     * @test
+     * @see DataSet/copyContentToLanguage.csv
+     */
+    public function copyContentToLanguage()
+    {
+        parent::copyContentToLanguage();
+        $this->actionService->publishWorkspace(self::VALUE_WorkspaceId);
+        $this->assertAssertionDataSet('copyContentToLanguage');
+
+        $this->setUpFrontendRootPage(1, [
+            'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts',
+            'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRendererNoOverlay.ts'
+        ]);
+        $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections();
+        $this->assertThat($responseSections, $this->getRequestSectionHasRecordConstraint()
+            ->setTable(self::TABLE_Content)->setField('header')->setValues('[Translate to Dansk:] Regular Element #3', '[Translate to Dansk:] Regular Element #2'));
+    }
+
     /**
      * @test
      * @see DataSet/Assertion/localizeContentRecord.csv
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/DataSet/copyContentToLanguage.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/DataSet/copyContentToLanguage.csv
new file mode 100644
index 0000000000000000000000000000000000000000..5a9a18dae7f22f36e3749d9000ff86d77cab70b4
--- /dev/null
+++ b/typo3/sysext/workspaces/Tests/Functional/DataHandling/Regular/PublishAll/DataSet/copyContentToLanguage.csv
@@ -0,0 +1,9 @@
+tt_content,,,,,,,,,,,,
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header
+,296,88,256,0,0,0,0,0,0,0,0,Regular Element #0
+,297,89,256,0,0,0,0,0,0,0,0,Regular Element #1
+,298,89,512,0,0,0,0,0,0,0,0,Regular Element #2
+,299,89,768,0,0,0,0,0,0,0,0,Regular Element #3
+,300,89,1024,0,1,299,0,0,0,0,0,[Translate to Dansk:] Regular Element #3
+,301,-1,512,0,0,0,2,2,0,298,0,Regular Element #2
+,302,89,640,0,1,0,0,0,0,0,0,[Translate to Dansk:] Regular Element #2