protected ContentEntityBase::getTranslatedField($name, $langcode)
Gets a translated field.
Return value
\Drupal\Core\Field\FieldItemListInterface
File
- core/lib/Drupal/Core/Entity/ContentEntityBase.php, line 462
Class
- ContentEntityBase
- Implements Entity Field API specific enhancements to the Entity class.
Namespace
Drupal\Core\Entity
Code
protected function getTranslatedField($name, $langcode) { if ($this->translations[$this->activeLangcode]['status'] == static::TRANSLATION_REMOVED) { throw new \InvalidArgumentException("The entity object refers to a removed translation ({$this->activeLangcode}) and cannot be manipulated."); } // Populate $this->fields to speed-up further look-ups and to keep track of // fields objects, possibly holding changes to field values. if (!isset($this->fields[$name][$langcode])) { $definition = $this->getFieldDefinition($name); if (!$definition) { throw new \InvalidArgumentException("Field $name is unknown."); } // Non-translatable fields are always stored with // LanguageInterface::LANGCODE_DEFAULT as key. $default = $langcode == LanguageInterface::LANGCODE_DEFAULT; if (!$default && !$definition->isTranslatable()) { if (!isset($this->fields[$name][LanguageInterface::LANGCODE_DEFAULT])) { $this->fields[$name][LanguageInterface::LANGCODE_DEFAULT] = $this->getTranslatedField($name, LanguageInterface::LANGCODE_DEFAULT); } $this->fields[$name][$langcode] = &$this->fields[$name][LanguageInterface::LANGCODE_DEFAULT]; } else { $value = NULL; if (isset($this->values[$name][$langcode])) { $value = $this->values[$name][$langcode]; } $field = \Drupal::service('plugin.manager.field.field_type')->createFieldItemList($this->getTranslation($langcode), $name, $value); if ($default) { // $this->defaultLangcode might not be set if we are initializing the // default language code cache, in which case there is no valid // langcode to assign. $field_langcode = isset($this->defaultLangcode) ? $this->defaultLangcode : LanguageInterface::LANGCODE_NOT_SPECIFIED; } else { $field_langcode = $langcode; } $field->setLangcode($field_langcode); $this->fields[$name][$langcode] = $field; } } return $this->fields[$name][$langcode]; }
Please login to continue.