diff -u b/core/modules/menu_link_content/src/Plugin/migrate/source/d6/MenuLinkTranslation.php b/core/modules/menu_link_content/src/Plugin/migrate/source/d6/MenuLinkTranslation.php --- b/core/modules/menu_link_content/src/Plugin/migrate/source/d6/MenuLinkTranslation.php +++ b/core/modules/menu_link_content/src/Plugin/migrate/source/d6/MenuLinkTranslation.php @@ -47,10 +47,14 @@ * {@inheritdoc} */ public function prepareRow(Row $row) { - parent::prepareRow($row); $language = $row->getSourceProperty('language'); $mlid = $row->getSourceProperty('mlid'); + // If this row has been migrated it is a duplicate then skip it. + if ($this->idMap->lookupDestinationIds(['mlid' => $mlid, 'language' => $language])) { + return FALSE; + } + // Save the translation for this property. $property = $row->getSourceProperty('property'); $row->setSourceProperty($property . '_translated', $row->getSourceProperty('translation')); @@ -67,6 +71,7 @@ $query->addField('lt', 'translation'); $results = $query->execute()->fetchAssoc(); $row->setSourceProperty($other_property . '_translated', $results['translation']); + parent::prepareRow($row); } /** diff -u b/core/modules/menu_link_content/tests/src/Kernel/Plugin/migrate/source/d6/MenuLinkTranslationTest.php b/core/modules/menu_link_content/tests/src/Kernel/Plugin/migrate/source/d6/MenuLinkTranslationTest.php --- b/core/modules/menu_link_content/tests/src/Kernel/Plugin/migrate/source/d6/MenuLinkTranslationTest.php +++ b/core/modules/menu_link_content/tests/src/Kernel/Plugin/migrate/source/d6/MenuLinkTranslationTest.php @@ -211,7 +211,6 @@ 'description' => 'Test menu link 2', 'title_translated' => 'fr - title translation', 'description_translated' => 'fr - description translation', - ], [ 'menu_name' => 'menu-test-menu',