diff --git a/translatable_menu_link_uri.module b/translatable_menu_link_uri.module index f8361b7..7af5294 100644 --- a/translatable_menu_link_uri.module +++ b/translatable_menu_link_uri.module @@ -5,12 +5,12 @@ * Contains translatable_menu_link_uri.module. */ -use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Routing\RouteMatchInterface; use Drupal\Core\Entity\EntityTypeInterface; use Drupal\Core\Field\BaseFieldDefinition; use Drupal\Core\Form\FormStateInterface; use Drupal\link\LinkItemInterface; +use Drupal\menu_link_content\Plugin\Menu\MenuLinkContent; /** * Implements hook_help(). @@ -100,20 +100,10 @@ function translatable_menu_link_uri_iterate_menu(&$item) { } /** @var \Drupal\Core\Menu\MenuLinkInterface $link */ $link = $item['original_link'] ?? NULL; - $plugin_id = $link !== NULL ? $link->getPluginId() : ''; - $url = NULL; - // If menu link is generated by menu_link_content, let's go deeper into details. - if (strpos($plugin_id, 'menu_link_content') !== FALSE && !is_null($link->getDerivativeId())) { - $link_entity = \Drupal::service('entity.repository') - ->loadEntityByUuid('menu_link_content', $link->getDerivativeId()); - - if ($link_entity instanceof EntityInterface) { - // We have entity, now, let's translate it. - $translated_entity = \Drupal::service('entity.repository')->getTranslationFromContext($link_entity); - - /** @var Drupal\link\Plugin\Field\FieldType\Linkitem $url */ - $url = $translated_entity->link_override->first(); - } + + if ($link instanceof MenuLinkContent) { + /** @var \Drupal\link\LinkItemInterface $url */ + $url = $link->getEntity()->link_override->first(); // We inherit options from current (overridden) element. $options = $item['url']->getOptions(); @@ -123,7 +113,7 @@ function translatable_menu_link_uri_iterate_menu(&$item) { // Never inherit hash string. unset($options['fragment']); - if ($url !== NULL) { + if ($url instanceof LinkItemInterface) { $item['url'] = $url->isEmpty() ? $item['url'] : $url->getUrl(); }