LanguageReference.php

Same filename and directory in other branches
  1. 9 core/lib/Drupal/Core/TypedData/Plugin/DataType/LanguageReference.php
  2. 8.9.x core/lib/Drupal/Core/TypedData/Plugin/DataType/LanguageReference.php
  3. 10 core/lib/Drupal/Core/TypedData/Plugin/DataType/LanguageReference.php

Namespace

Drupal\Core\TypedData\Plugin\DataType

File

core/lib/Drupal/Core/TypedData/Plugin/DataType/LanguageReference.php

View source
<?php

namespace Drupal\Core\TypedData\Plugin\DataType;

use Drupal\Core\Language\LanguageInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\TypedData\Attribute\DataType;
use Drupal\Core\TypedData\DataReferenceBase;
use Drupal\Core\TypedData\DataReferenceDefinition;

/**
 * Defines the 'language_reference' data type.
 *
 * This serves as 'language' property of language field items and gets
 * its value set from the parent, i.e. LanguageItem.
 *
 * The plain value is the language object, i.e. an instance of
 * \Drupal\Core\Language\Language. For setting the value the language object or
 * the language code as string may be passed.
 */
class LanguageReference extends DataReferenceBase {
  
  /**
   * {@inheritdoc}
   */
  public function getTargetIdentifier() {
    $language = $this->getTarget();
    return isset($language) ? $language->id() : NULL;
  }
  
  /**
   * Returns all valid values for a `langcode` config value.
   *
   * @return string[]
   *   All possible valid langcodes. This includes all langcodes in the standard
   *   list of human languages, along with special langcodes like `und`, `zxx`,
   *   and `site_default`, which Drupal uses internally. If any custom languages
   *   are defined, they will be included as well.
   *
   * @see \Drupal\Core\Language\LanguageManagerInterface::getLanguages()
   * @see \Drupal\Core\Language\LanguageManagerInterface::getStandardLanguageList()
   */
  public static function getAllValidLangcodes() : array {
    $language_manager = \Drupal::languageManager();
    return array_unique([
      array_keys($language_manager::getStandardLanguageList()),
      // We can't use LanguageInterface::STATE_ALL because it will exclude the
      // site default language in certain situations.
      // @see \Drupal\Core\Language\LanguageManager::filterLanguages()
array_keys($language_manager->getLanguages(LanguageInterface::STATE_LOCKED | LanguageInterface::STATE_CONFIGURABLE | LanguageInterface::STATE_SITE_DEFAULT)),
      // Include special language codes used internally.
LanguageInterface::LANGCODE_NOT_APPLICABLE,
      LanguageInterface::LANGCODE_SITE_DEFAULT,
      LanguageInterface::LANGCODE_DEFAULT,
      LanguageInterface::LANGCODE_SYSTEM,
      LanguageInterface::LANGCODE_NOT_SPECIFIED,
    ]);
  }

}

Classes

Title Deprecated Summary
LanguageReference Defines the 'language_reference' data type.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.