ContentEntityBase::getTranslation

public ContentEntityBase::getTranslation($langcode)

Gets a translation of the data.

The returned translation has to be of the same type than this typed data object.

Parameters

$langcode: The language code of the translation to get or LanguageInterface::LANGCODE_DEFAULT to get the data in default language.

Return value

$this A typed data object for the translated data.

Throws

\InvalidArgumentException If an invalid or non-existing translation language is specified.

Overrides TranslatableInterface::getTranslation

File

core/lib/Drupal/Core/Entity/ContentEntityBase.php, line 719

Class

ContentEntityBase
Implements Entity Field API specific enhancements to the Entity class.

Namespace

Drupal\Core\Entity

Code

public function getTranslation($langcode) {
  // Ensure we always use the default language code when dealing with the
  // original entity language.
  if ($langcode != LanguageInterface::LANGCODE_DEFAULT && $langcode == $this->defaultLangcode) {
    $langcode = LanguageInterface::LANGCODE_DEFAULT;
  }

  // Populate entity translation object cache so it will be available for all
  // translation objects.
  if ($langcode == $this->activeLangcode) {
    $this->translations[$langcode]['entity'] = $this;
  }

  // If we already have a translation object for the specified language we can
  // just return it.
  if (isset($this->translations[$langcode]['entity'])) {
    $translation = $this->translations[$langcode]['entity'];
  }
  // Otherwise if an existing translation language was specified we need to
  // instantiate the related translation.
  elseif (isset($this->translations[$langcode])) {
    $translation = $this->initializeTranslation($langcode);
    $this->translations[$langcode]['entity'] = $translation;
  }

  if (empty($translation)) {
    throw new \InvalidArgumentException("Invalid translation language ($langcode) specified.");
  }

  return $translation;
}
doc_Drupal
2016-10-29 08:56:56
Comments
Leave a Comment

Please login to continue.