3 namespace Drupal\language;
5 use Drupal\Core\Entity\EntityInterface;
6 use Drupal\Core\Field\Plugin\Field\FieldType\LanguageItem;
7 use Drupal\Core\Language\Language;
10 * Alternative plugin implementation of the 'language' field type.
12 * Replaces the Core 'language' entity field type implementation, changes the
13 * default values used.
15 * Required settings are:
16 * - target_type: The entity type to reference.
18 * @see language_field_info_alter().
20 class DefaultLanguageItem extends LanguageItem {
25 public function applyDefaultValue($notify = TRUE) {
26 // Default to LANGCODE_NOT_SPECIFIED.
27 $langcode = Language::LANGCODE_NOT_SPECIFIED;
28 if ($entity = $this->getEntity()) {
29 $langcode = $this->getDefaultLangcode($entity);
31 // Always notify otherwise default langcode will not be set correctly.
32 $this->setValue(['value' => $langcode], TRUE);
37 * Provides default language code of given entity.
39 * @param \Drupal\Core\Entity\EntityInterface $entity
40 * The entity whose language code to be loaded.
43 * A string language code.
45 public function getDefaultLangcode(EntityInterface $entity) {
46 return language_get_default_langcode($entity->getEntityTypeId(), $entity->bundle());