public function ContentEntityStorageBase::createTranslation in Drupal 8
Same name and namespace in other branches
- 9 core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php \Drupal\Core\Entity\ContentEntityStorageBase::createTranslation()
Constructs a new entity translation object, without permanently saving it.
@todo Consider accepting \Drupal\Core\Entity\TranslatableInterface as first parameter. See https://www.drupal.org/project/drupal/issues/2932049.
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 Another instance of the specified entity object class with the specified active language and initial values.
Overrides TranslatableStorageInterface::createTranslation
File
- core/
lib/ Drupal/ Core/ Entity/ ContentEntityStorageBase.php, line 269
Class
- ContentEntityStorageBase
- Base class for content entity storage handlers.
Namespace
Drupal\Core\EntityCode
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', $translation);
return $translation;
}