From 69c0cd6b370891c276aa513f996c02bf35ad3cf3 Mon Sep 17 00:00:00 2001 From: Sakthi Shanmuga Sundaram M <62943-sakthi_dev@users.noreply.drupalcode.org> Date: Mon, 24 Jul 2023 14:37:38 +0000 Subject: [PATCH 1/3] Issue#3241175: Resolve translation issue. --- src/UrlExtractor.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/UrlExtractor.php b/src/UrlExtractor.php index 4fd8b35..ef5feba 100644 --- a/src/UrlExtractor.php +++ b/src/UrlExtractor.php @@ -72,11 +72,17 @@ class UrlExtractor { elseif ($input instanceof EntityReferenceItem) { $entity = $input->entity; } + + // Get the current Language Code. + $languageManager = \Drupal::languageManager(); + $currentLanguage = $languageManager->getCurrentLanguage(LanguageInterface::TYPE_CONTENT); + $languageCode = $currentLanguage->getId(); + // 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 return $entity instanceof ContentEntityInterface ? - $this->getUrlFromEntity($entity, $relative) : NULL; + $this->getUrlFromEntity($entity->hasTranslation($langcode) ? $entity->getTranslation($langcode) : $entity , $relative) : NULL; } /** From 0f65cc9fdaf1a28ca223b1914888217c1273769b Mon Sep 17 00:00:00 2001 From: Jose Perez Date: Mon, 24 Jul 2023 15:26:34 -0300 Subject: [PATCH 2/3] Rebasing code --- src/UrlExtractor.php | 18 +++++++++++------- twig_tweak.services.yml | 2 +- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/UrlExtractor.php b/src/UrlExtractor.php index ef5feba..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; } /** @@ -72,15 +81,10 @@ class UrlExtractor { elseif ($input instanceof EntityReferenceItem) { $entity = $input->entity; } - - // Get the current Language Code. - $languageManager = \Drupal::languageManager(); - $currentLanguage = $languageManager->getCurrentLanguage(LanguageInterface::TYPE_CONTENT); - $languageCode = $currentLanguage->getId(); - // 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->hasTranslation($langcode) ? $entity->getTranslation($langcode) : $entity , $relative) : NULL; } diff --git a/twig_tweak.services.yml b/twig_tweak.services.yml index f5c6ef3..56d7b19 100644 --- a/twig_tweak.services.yml +++ b/twig_tweak.services.yml @@ -34,7 +34,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_converter'] twig_tweak.uri_extractor: class: Drupal\twig_tweak\UriExtractor From 7689636e05e0d5df2800504b87fc6be5c064d1be Mon Sep 17 00:00:00 2001 From: Jose Perez Date: Mon, 24 Jul 2023 16:07:01 -0300 Subject: [PATCH 3/3] Fix service name --- twig_tweak.services.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twig_tweak.services.yml b/twig_tweak.services.yml index 56d7b19..6b18b0f 100644 --- a/twig_tweak.services.yml +++ b/twig_tweak.services.yml @@ -34,7 +34,7 @@ services: twig_tweak.url_extractor: class: Drupal\twig_tweak\UrlExtractor - arguments: ['@entity_type.manager', '@file_url_generator', '@language_converter'] + arguments: ['@entity_type.manager', '@file_url_generator', '@language_manager'] twig_tweak.uri_extractor: class: Drupal\twig_tweak\UriExtractor