public EntityRepository::getTranslationFromContext(EntityInterface $entity, $langcode = NULL, $context = array())
Gets the entity translation to be used in the given context.
This will check whether a translation for the desired language is available and if not, it will fall back to the most appropriate translation based on the provided context.
Parameters
\Drupal\Core\Entity\EntityInterface $entity: The entity whose translation will be returned.
string $langcode: (optional) The language of the current context. Defaults to the current content language.
array $context: (optional) An associative array of arbitrary data that can be useful to determine the proper fallback sequence.
Return value
\Drupal\Core\Entity\EntityInterface An entity object for the translated data.
Overrides EntityRepositoryInterface::getTranslationFromContext
See also
\Drupal\Core\Language\LanguageManagerInterface::getFallbackCandidates()
File
- core/lib/Drupal/Core/Entity/EntityRepository.php, line 82
Class
- EntityRepository
- Provides several mechanisms for retrieving entities.
Namespace
Drupal\Core\Entity
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | public function getTranslationFromContext(EntityInterface $entity , $langcode = NULL, $context = array ()) { $translation = $entity ; if ( $entity instanceof TranslatableInterface && count ( $entity ->getTranslationLanguages()) > 1) { if ( empty ( $langcode )) { $langcode = $this ->languageManager->getCurrentLanguage(LanguageInterface::TYPE_CONTENT)->getId(); $entity ->addCacheContexts([ 'languages:' . LanguageInterface::TYPE_CONTENT]); } // Retrieve language fallback candidates to perform the entity language // negotiation, unless the current translation is already the desired one. if ( $entity ->language()->getId() != $langcode ) { $context [ 'data' ] = $entity ; $context += array ( 'operation' => 'entity_view' , 'langcode' => $langcode ); $candidates = $this ->languageManager->getFallbackCandidates( $context ); // Ensure the default language has the proper language code. $default_language = $entity ->getUntranslated()->language(); $candidates [ $default_language ->getId()] = LanguageInterface::LANGCODE_DEFAULT; // Return the most fitting entity translation. foreach ( $candidates as $candidate ) { if ( $entity ->hasTranslation( $candidate )) { $translation = $entity ->getTranslation( $candidate ); break ; } } } } return $translation ; } |
Please login to continue.