diff --git a/core/lib/Drupal/Core/Entity/EntityListBuilder.php b/core/lib/Drupal/Core/Entity/EntityListBuilder.php index bc68e06eb2..3415dae82f 100644 --- a/core/lib/Drupal/Core/Entity/EntityListBuilder.php +++ b/core/lib/Drupal/Core/Entity/EntityListBuilder.php @@ -132,14 +132,14 @@ protected function getDefaultOperations(EntityInterface $entity) { $operations['edit'] = [ 'title' => $this->t('Edit'), 'weight' => 10, - 'url' => $this->ensureDestination($entity->toUrl('edit-form')), + 'url' => $this->ensureDestination($entity->toUrl('edit-form', ['language' => \Drupal::languageManager()->getCurrentLanguage()])), ]; } if ($entity->access('delete') && $entity->hasLinkTemplate('delete-form')) { $operations['delete'] = [ 'title' => $this->t('Delete'), 'weight' => 100, - 'url' => $this->ensureDestination($entity->toUrl('delete-form')), + 'url' => $this->ensureDestination($entity->toUrl('delete-form', ['language' => \Drupal::languageManager()->getCurrentLanguage()])), ]; } diff --git a/core/modules/menu_link_content/src/Plugin/Menu/MenuLinkContent.php b/core/modules/menu_link_content/src/Plugin/Menu/MenuLinkContent.php index 0aec98069c..b46fb03d36 100644 --- a/core/modules/menu_link_content/src/Plugin/Menu/MenuLinkContent.php +++ b/core/modules/menu_link_content/src/Plugin/Menu/MenuLinkContent.php @@ -185,14 +185,16 @@ public function getDescription() { * {@inheritdoc} */ public function getDeleteRoute() { - return $this->getEntity()->toUrl('delete-form'); + $language = $this->languageManager->getCurrentLanguage(); + return $this->getEntity()->toUrl('delete-form', ['language' => $language]); } /** * {@inheritdoc} */ public function getEditRoute() { - return $this->getEntity()->toUrl(); + $language = $this->languageManager->getCurrentLanguage(); + return $this->getEntity()->toUrl('edit-form', ['language' => $language]); } /** diff --git a/core/modules/menu_link_content/tests/src/Functional/MenuLinkContentTranslationUITest.php b/core/modules/menu_link_content/tests/src/Functional/MenuLinkContentTranslationUITest.php index 20eeb7a113..5a537aa09e 100644 --- a/core/modules/menu_link_content/tests/src/Functional/MenuLinkContentTranslationUITest.php +++ b/core/modules/menu_link_content/tests/src/Functional/MenuLinkContentTranslationUITest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\menu_link_content\Functional; +use Drupal\Core\Url; use Drupal\Tests\content_translation\Functional\ContentTranslationUITestBase; use Drupal\menu_link_content\Entity\MenuLinkContent; @@ -83,6 +84,19 @@ public function testTranslationLinkOnMenuEditForm() { $menu_link_content->save(); $this->drupalGet('admin/structure/menu/manage/tools'); $this->assertSession()->linkExists('Translate'); + + // Test that the edit and delete route retain the current language. + $language = \Drupal::service('language_manager')->getLanguage('fr'); + $menu_link_content_id = $menu_link_content->id(); + + $this->drupalGet('/admin/structure/menu/manage/tools'); + $this->drupalGet('/fr/admin/structure/menu/manage/tools'); + $this->assertSession() + ->linkByHrefExists(Url::fromRoute('entity.menu_link_content.edit_form', ['menu_link_content' => $menu_link_content_id], ['language' => $language]) + ->toString()); + $this->assertSession() + ->linkByHrefExists(Url::fromRoute('entity.menu_link_content.delete_form', ['menu_link_content' => $menu_link_content_id], ['language' => $language]) + ->toString()); } /**