diff --git a/src/UrlExtractor.php b/src/UrlExtractor.php index 4fd8b35..a1bc972 100644 --- a/src/UrlExtractor.php +++ b/src/UrlExtractor.php @@ -8,6 +8,7 @@ use Drupal\Core\Field\EntityReferenceFieldItemListInterface; use Drupal\Core\Field\FieldItemList; use Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem; use Drupal\Core\File\FileUrlGeneratorInterface; +use Drupal\Core\Language\LanguageManagerInterface; use Drupal\file\FileInterface; use Drupal\link\LinkItemInterface; use Drupal\media\MediaInterface; @@ -32,12 +33,20 @@ class UrlExtractor { */ protected $fileUrlGenerator; + /** + * The language manager. + * + * @var \Drupal\Core\Language\LanguageManagerInterface + */ + protected $languageManager; + /** * Constructs a UrlExtractor object. */ - public function __construct(EntityTypeManagerInterface $entity_type_manager, FileUrlGeneratorInterface $file_url_generator) { + public function __construct(EntityTypeManagerInterface $entity_type_manager, FileUrlGeneratorInterface $file_url_generator, LanguageManagerInterface $languageManager) { $this->entityTypeManager = $entity_type_manager; $this->fileUrlGenerator = $file_url_generator; + $this->languageManager = $languageManager; } /** @@ -75,8 +84,9 @@ class UrlExtractor { // Drupal does not clean up references to deleted entities. So that the // entity property might be empty while the field item might not. // @see https://www.drupal.org/project/drupal/issues/2723323 + $langcode = $this->languageManager->getCurrentLanguage()->getId(); return $entity instanceof ContentEntityInterface ? - $this->getUrlFromEntity($entity, $relative) : NULL; + $this->getUrlFromEntity($entity->hasTranslation($langcode) ? $entity->getTranslation($langcode) : $entity , $relative) : NULL; } /** diff --git a/twig_tweak.services.yml b/twig_tweak.services.yml index b224788..ba4ca41 100644 --- a/twig_tweak.services.yml +++ b/twig_tweak.services.yml @@ -35,7 +35,7 @@ services: twig_tweak.url_extractor: class: Drupal\twig_tweak\UrlExtractor - arguments: ['@entity_type.manager', '@file_url_generator'] + arguments: ['@entity_type.manager', '@file_url_generator', '@language_manager'] twig_tweak.uri_extractor: class: Drupal\twig_tweak\UriExtractor