You are here

public function ContentEntityStorageBase::createTranslation in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php \Drupal\Core\Entity\ContentEntityStorageBase::createTranslation()

Constructs a new entity translation object, without permanently saving it.

Parameters

\Drupal\Core\Entity\ContentEntityInterface $entity: The entity object being translated.

string $langcode: The translation language code.

array $values: (optional) An associative array of initial field values keyed by field name. If none is provided default values will be applied.

Return value

\Drupal\Core\Entity\ContentEntityInterface A new entity translation object.

Overrides ContentEntityStorageInterface::createTranslation

File

core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php, line 135
Contains \Drupal\Core\Entity\ContentEntityStorageBase.

Class

ContentEntityStorageBase
Base class for content entity storage handlers.

Namespace

Drupal\Core\Entity

Code

public function createTranslation(ContentEntityInterface $entity, $langcode, array $values = []) {
  $translation = $entity
    ->getTranslation($langcode);
  $definitions = array_filter($translation
    ->getFieldDefinitions(), function (FieldDefinitionInterface $definition) {
    return $definition
      ->isTranslatable();
  });
  $field_names = array_map(function (FieldDefinitionInterface $definition) {
    return $definition
      ->getName();
  }, $definitions);
  $values[$this->langcodeKey] = $langcode;
  $values[$this
    ->getEntityType()
    ->getKey('default_langcode')] = FALSE;
  $this
    ->initFieldValues($translation, $values, $field_names);
  $this
    ->invokeHook('translation_create', $entity);
  return $translation;
}