class Language

Same name in this branch
  1. 10 core/modules/language/src/Plugin/migrate/source/Language.php \Drupal\language\Plugin\migrate\source\Language
  2. 10 core/modules/language/src/Plugin/Condition/Language.php \Drupal\language\Plugin\Condition\Language
  3. 10 core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Language.php \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Language
  4. 10 core/lib/Drupal/Core/TypedData/Plugin/DataType/Language.php \Drupal\Core\TypedData\Plugin\DataType\Language
Same name and namespace in other branches
  1. 9 core/modules/language/src/Plugin/migrate/source/Language.php \Drupal\language\Plugin\migrate\source\Language
  2. 9 core/modules/language/src/Plugin/Condition/Language.php \Drupal\language\Plugin\Condition\Language
  3. 9 core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Language.php \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Language
  4. 9 core/modules/ckeditor/src/Plugin/CKEditorPlugin/Language.php \Drupal\ckeditor\Plugin\CKEditorPlugin\Language
  5. 9 core/lib/Drupal/Core/TypedData/Plugin/DataType/Language.php \Drupal\Core\TypedData\Plugin\DataType\Language
  6. 9 core/lib/Drupal/Core/Language/Language.php \Drupal\Core\Language\Language
  7. 8.9.x core/modules/language/src/Plugin/migrate/source/Language.php \Drupal\language\Plugin\migrate\source\Language
  8. 8.9.x core/modules/language/src/Plugin/Condition/Language.php \Drupal\language\Plugin\Condition\Language
  9. 8.9.x core/modules/ckeditor/src/Plugin/CKEditorPlugin/Language.php \Drupal\ckeditor\Plugin\CKEditorPlugin\Language
  10. 8.9.x core/lib/Drupal/Core/TypedData/Plugin/DataType/Language.php \Drupal\Core\TypedData\Plugin\DataType\Language
  11. 8.9.x core/lib/Drupal/Core/Language/Language.php \Drupal\Core\Language\Language
  12. 11.x core/modules/language/src/Plugin/migrate/source/Language.php \Drupal\language\Plugin\migrate\source\Language
  13. 11.x core/modules/language/src/Plugin/Condition/Language.php \Drupal\language\Plugin\Condition\Language
  14. 11.x core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Language.php \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Language
  15. 11.x core/lib/Drupal/Core/TypedData/Plugin/DataType/Language.php \Drupal\Core\TypedData\Plugin\DataType\Language
  16. 11.x core/lib/Drupal/Core/Language/Language.php \Drupal\Core\Language\Language

An object containing the information for an interface language.

Attributes

#[Condition(id: "language", label: new TranslatableMarkup("Language"), context_definitions: ["language" => new ContextDefinition(data_type: "language", label: new TranslatableMarkup("Language"))])]
#[DataType(id: "language", label: new TranslatableMarkup("Language"), description: new TranslatableMarkup("A language object."))]

Hierarchy

Expanded class hierarchy of Language

See also

\Drupal\Core\Language\LanguageManager::getLanguage()

60 files declare their use of Language
AliasManagerTest.php in core/modules/path_alias/tests/src/Unit/AliasManagerTest.php
ConfigEntityBaseUnitTest.php in core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityBaseUnitTest.php
ConfigEntityStorageTest.php in core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityStorageTest.php
ConfigMapperManagerTest.php in core/modules/config_translation/tests/src/Unit/ConfigMapperManagerTest.php
ConfigNamesMapperTest.php in core/modules/config_translation/tests/src/Unit/ConfigNamesMapperTest.php

... See full list

396 string references to 'Language'
AccountSettingsForm::buildForm in core/modules/user/src/AccountSettingsForm.php
AssetControllerBase::deliver in core/modules/system/src/Controller/AssetControllerBase.php
Generates an aggregate, given a filename.
block.block.umami_languageswitcher.yml in core/profiles/demo_umami/config/install/block.block.umami_languageswitcher.yml
core/profiles/demo_umami/config/install/block.block.umami_languageswitcher.yml
BlockContentTypeForm::form in core/modules/block_content/src/BlockContentTypeForm.php
BlockForm::buildVisibilityInterface in core/modules/block/src/BlockForm.php
Helper function for building the visibility UI form.

... See full list

File

core/lib/Drupal/Core/Language/Language.php, line 12

Namespace

Drupal\Core\Language
View source
class Language implements LanguageInterface {
  
  /**
   * The values to use to instantiate the default language.
   *
   * @var array
   */
  public static $defaultValues = [
    'id' => 'en',
    'name' => 'English',
    'direction' => self::DIRECTION_LTR,
    'weight' => 0,
    'locked' => FALSE,
  ];
  // Properties within the Language are set up as the default language.
  
  /**
   * The human readable English name.
   *
   * @var string
   */
  protected $name = '';
  
  /**
   * The ID, langcode.
   *
   * @var string
   */
  protected $id = '';
  
  /**
   * The direction, left-to-right, or right-to-left.
   *
   * Defined using constants, either self::DIRECTION_LTR or self::DIRECTION_RTL.
   *
   * @var int
   */
  protected $direction = self::DIRECTION_LTR;
  
  /**
   * The weight, used for ordering languages in lists, like selects or tables.
   *
   * @var int
   */
  protected $weight = 0;
  
  /**
   * Locked indicates a language used by the system, not an actual language.
   *
   * Examples of locked languages are, LANGCODE_NOT_SPECIFIED, und, and
   * LANGCODE_NOT_APPLICABLE, zxx, which are usually shown in language selects
   * but hidden in places like the Language configuration and cannot be deleted.
   *
   * @var bool
   */
  protected $locked = FALSE;
  
  /**
   * Constructs a new class instance.
   *
   * @param array $values
   *   An array of property values, keyed by property name, used to construct
   *   the language.
   */
  public function __construct(array $values = []) {
    // Set all the provided properties for the language.
    foreach ($values as $key => $value) {
      if (property_exists($this, $key)) {
        $this->{$key} = $value;
      }
    }
    // If some values were not set, set sane defaults of a predefined language.
    if (!isset($values['name']) || !isset($values['direction'])) {
      $predefined = LanguageManager::getStandardLanguageList();
      if (isset($predefined[$this->id])) {
        if (!isset($values['name'])) {
          $this->name = $predefined[$this->id][0];
        }
        if (!isset($values['direction']) && isset($predefined[$this->id][2])) {
          $this->direction = $predefined[$this->id][2];
        }
      }
    }
  }
  
  /**
   * {@inheritdoc}
   */
  public function getName() {
    return $this->name;
  }
  
  /**
   * {@inheritdoc}
   */
  public function getId() {
    return $this->id;
  }
  
  /**
   * {@inheritdoc}
   */
  public function getDirection() {
    return $this->direction;
  }
  
  /**
   * {@inheritdoc}
   */
  public function getWeight() {
    return $this->weight;
  }
  
  /**
   * {@inheritdoc}
   */
  public function isDefault() {
    return static::getDefaultLangcode() == $this->getId();
  }
  
  /**
   * {@inheritdoc}
   */
  public function isLocked() {
    return (bool) $this->locked;
  }
  
  /**
   * Sort language objects.
   *
   * @param \Drupal\Core\Language\LanguageInterface[] $languages
   *   The array of language objects keyed by langcode.
   */
  public static function sort(&$languages) {
    uasort($languages, function (LanguageInterface $a, LanguageInterface $b) {
      $a_weight = $a->getWeight();
      $b_weight = $b->getWeight();
      if ($a_weight == $b_weight) {
        $a_name = $a->getName();
        $b_name = $b->getName();
        // If either name is a TranslatableMarkup object it can not be converted
        // to a string. This is because translation requires a sorted list of
        // languages thereby causing an infinite loop. Determine the order based
        // on ID if this is the case.
        if ($a_name instanceof TranslatableMarkup || $b_name instanceof TranslatableMarkup) {
          $a_name = $a->getId();
          $b_name = $b->getId();
        }
        return strnatcasecmp($a_name, $b_name);
      }
      return $a_weight <=> $b_weight;
    });
  }
  
  /**
   * Gets the default langcode.
   *
   * @return string
   *   The current default langcode.
   */
  protected static function getDefaultLangcode() {
    $language = \Drupal::service('language.default')->get();
    return $language->getId();
  }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title
Language::$defaultValues public static property The values to use to instantiate the default language.
Language::$direction protected property The direction, left-to-right, or right-to-left.
Language::$id protected property The ID, langcode.
Language::$locked protected property Locked indicates a language used by the system, not an actual language.
Language::$name protected property The human readable English name.
Language::$weight protected property The weight, used for ordering languages in lists, like selects or tables.
Language::getDefaultLangcode protected static function Gets the default langcode.
Language::getDirection public function Overrides LanguageInterface::getDirection
Language::getId public function Overrides LanguageInterface::getId
Language::getName public function Overrides LanguageInterface::getName
Language::getWeight public function Overrides LanguageInterface::getWeight
Language::isDefault public function Overrides LanguageInterface::isDefault
Language::isLocked public function Overrides LanguageInterface::isLocked
Language::sort public static function Sort language objects.
Language::__construct public function Constructs a new class instance.
LanguageInterface::DIRECTION_LTR constant Language written left to right. Possible value of $language-&gt;direction.
LanguageInterface::DIRECTION_RTL constant Language written right to left. Possible value of $language-&gt;direction.
LanguageInterface::LANGCODE_DEFAULT constant Language code referring to the default language of data, e.g. of an entity.
LanguageInterface::LANGCODE_NOT_APPLICABLE constant The language code used when the marked object has no linguistic content.
LanguageInterface::LANGCODE_NOT_SPECIFIED constant The language code used when no language is explicitly assigned (yet).
LanguageInterface::LANGCODE_SITE_DEFAULT constant Language code referring to site&#039;s default language.
LanguageInterface::LANGCODE_SYSTEM constant Special system language code (only applicable to UI language).
LanguageInterface::STATE_ALL constant The language state used when referring to all languages.
LanguageInterface::STATE_CONFIGURABLE constant The language state when referring to configurable languages.
LanguageInterface::STATE_LOCKED constant The language state when referring to locked languages.
LanguageInterface::STATE_SITE_DEFAULT constant The language state used when referring to the site&#039;s default language.
LanguageInterface::TYPE_CONTENT constant The type of language used to define the content language.
LanguageInterface::TYPE_INTERFACE constant The type of language used to select the user interface.
LanguageInterface::TYPE_URL constant The type of language used for URLs.
LanguageInterface::VALID_LANGCODE_REGEX constant A regex for validating language codes according to W3C specifications.

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