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
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 33 34 35 36 37 38 39 40 41 42 | 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.