class ConfigurableLanguage in Drupal 10
Same name and namespace in other branches
- 8 core/modules/language/src/Entity/ConfigurableLanguage.php \Drupal\language\Entity\ConfigurableLanguage
- 9 core/modules/language/src/Entity/ConfigurableLanguage.php \Drupal\language\Entity\ConfigurableLanguage
Defines the ConfigurableLanguage entity.
Plugin annotation
@ConfigEntityType(
id = "configurable_language",
label = @Translation("Language"),
label_collection = @Translation("Languages"),
label_singular = @Translation("language"),
label_plural = @Translation("languages"),
label_count = @PluralTranslation(
singular = "@count language",
plural = "@count languages",
),
handlers = {
"list_builder" = "Drupal\language\LanguageListBuilder",
"access" = "Drupal\language\LanguageAccessControlHandler",
"form" = {
"add" = "Drupal\language\Form\LanguageAddForm",
"edit" = "Drupal\language\Form\LanguageEditForm",
"delete" = "Drupal\language\Form\LanguageDeleteForm"
}
},
admin_permission = "administer languages",
config_prefix = "entity",
entity_keys = {
"id" = "id",
"label" = "label",
"weight" = "weight"
},
config_export = {
"id",
"label",
"direction",
"weight",
"locked"
},
links = {
"delete-form" = "/admin/config/regional/language/delete/{configurable_language}",
"edit-form" = "/admin/config/regional/language/edit/{configurable_language}",
"collection" = "/admin/config/regional/language",
}
)
Hierarchy
- class \Drupal\Core\Entity\EntityBase implements EntityInterface uses RefinableCacheableDependencyTrait, DependencySerializationTrait
- class \Drupal\Core\Config\Entity\ConfigEntityBase implements ConfigEntityInterface uses SynchronizableEntityTrait, PluginDependencyTrait
- class \Drupal\language\Entity\ConfigurableLanguage implements ConfigurableLanguageInterface
- class \Drupal\Core\Config\Entity\ConfigEntityBase implements ConfigEntityInterface uses SynchronizableEntityTrait, PluginDependencyTrait
Expanded class hierarchy of ConfigurableLanguage
198 files declare their use of ConfigurableLanguage
- AdminPathEntityConverterLanguageTest.php in core/
modules/ language/ tests/ src/ Functional/ AdminPathEntityConverterLanguageTest.php - BasicAuthTest.php in core/
modules/ basic_auth/ tests/ src/ Functional/ BasicAuthTest.php - BlockContentFieldFilterTest.php in core/
modules/ block_content/ tests/ src/ Functional/ Views/ BlockContentFieldFilterTest.php - BlockLanguageCacheTest.php in core/
modules/ block/ tests/ src/ Functional/ BlockLanguageCacheTest.php - BlockUiTest.php in core/
modules/ block/ tests/ src/ Functional/ BlockUiTest.php
File
- core/
modules/ language/ src/ Entity/ ConfigurableLanguage.php, line 56
Namespace
Drupal\language\EntityView source
class ConfigurableLanguage extends ConfigEntityBase implements ConfigurableLanguageInterface {
/**
* The language ID (machine name).
*
* @var string
*/
protected $id;
/**
* The human-readable label for the language.
*
* @var string
*/
protected $label;
/**
* The direction of language, either DIRECTION_LTR or DIRECTION_RTL.
*
* @var int
*/
protected $direction = self::DIRECTION_LTR;
/**
* The weight of the language, used in lists of languages.
*
* @var int
*/
protected $weight = 0;
/**
* Locked languages cannot be edited.
*
* @var bool
*/
protected $locked = FALSE;
/**
* Used during saving to detect when the site becomes multilingual.
*
* This property is not saved to the language entity, but is needed for
* detecting when to rebuild the services.
*
* @see \Drupal\language\Entity\ConfigurableLanguage::preSave()
* @see \Drupal\language\Entity\ConfigurableLanguage::postSave()
*
* @var bool
*/
protected $preSaveMultilingual;
/**
* {@inheritdoc}
*/
public function isDefault() {
return static::getDefaultLangcode() == $this
->id();
}
/**
* {@inheritdoc}
*/
public function isLocked() {
return (bool) $this->locked;
}
/**
* {@inheritdoc}
*/
public function preSave(EntityStorageInterface $storage) {
parent::preSave($storage);
// Store whether or not the site is already multilingual so that we can
// rebuild services if necessary during
// \Drupal\language\Entity\ConfigurableLanguage::postSave().
$this->preSaveMultilingual = \Drupal::languageManager()
->isMultilingual();
}
/**
* {@inheritdoc}
*/
public function postSave(EntityStorageInterface $storage, $update = TRUE) {
parent::postSave($storage, $update);
$language_manager = \Drupal::languageManager();
$language_manager
->reset();
if (!$this
->isLocked() && $language_manager instanceof ConfigurableLanguageManagerInterface && !$this
->isSyncing()) {
$language_manager
->updateLockedLanguageWeights();
}
// Update URL Prefixes for all languages after the
// LanguageManagerInterface::getLanguages() cache is flushed.
language_negotiation_url_prefixes_update();
// If after adding this language the site will become multilingual, we need
// to rebuild language services.
if (!$this->preSaveMultilingual && !$update && $language_manager instanceof ConfigurableLanguageManagerInterface) {
$language_manager::rebuildServices();
}
if (!$update) {
// Install any available language configuration overrides for the language.
\Drupal::service('language.config_factory_override')
->installLanguageOverrides($this
->id());
}
if (!$this
->isLocked() && !$update) {
// Add language to the list of language domains.
$config = \Drupal::configFactory()
->getEditable('language.negotiation');
$domains = $config
->get('url.domains');
$domains[$this
->id()] = '';
$config
->set('url.domains', $domains)
->save(TRUE);
}
}
/**
* {@inheritdoc}
*
* @throws \DeleteDefaultLanguageException
* Exception thrown if we're trying to delete the default language entity.
* This is not allowed as a site must have a default language.
*/
public static function preDelete(EntityStorageInterface $storage, array $entities) {
$default_langcode = static::getDefaultLangcode();
foreach ($entities as $entity) {
if ($entity
->id() == $default_langcode && !$entity
->isUninstalling()) {
throw new DeleteDefaultLanguageException('Can not delete the default language');
}
}
}
/**
* {@inheritdoc}
*/
public static function postDelete(EntityStorageInterface $storage, array $entities) {
parent::postDelete($storage, $entities);
$language_manager = \Drupal::languageManager();
$language_manager
->reset();
$entity = reset($entities);
if ($language_manager instanceof ConfigurableLanguageManagerInterface && !$entity
->isUninstalling() && !$entity
->isSyncing()) {
$language_manager
->updateLockedLanguageWeights();
}
// If after deleting this language the site will become monolingual, we need
// to rebuild language services.
if (!\Drupal::languageManager()
->isMultilingual()) {
ConfigurableLanguageManager::rebuildServices();
}
// Remove language from language prefix and domain list.
$config = \Drupal::configFactory()
->getEditable('language.negotiation');
$config
->clear('url.prefixes.' . $entity
->id());
$config
->clear('url.domains.' . $entity
->id());
$config
->save(TRUE);
}
/**
* Gets the default langcode.
*
* @return string
* The current default langcode.
*/
protected static function getDefaultLangcode() {
$language = \Drupal::service('language.default')
->get();
return $language
->getId();
}
/**
* {@inheritdoc}
*/
public function getName() {
return $this
->label();
}
/**
* {@inheritdoc}
*/
public function setName($name) {
$this->label = $name;
return $this;
}
/**
* {@inheritdoc}
*/
public function getId() {
return $this
->id();
}
/**
* {@inheritdoc}
*/
public function getDirection() {
return $this->direction;
}
/**
* {@inheritdoc}
*/
public function getWeight() {
return $this->weight;
}
/**
* {@inheritdoc}
*/
public function setWeight($weight) {
$this->weight = $weight;
return $this;
}
/**
* Creates a configurable language object from a langcode.
*
* @param string $langcode
* The language code to use to create the object.
*
* @return $this
*
* @see \Drupal\Core\Language\LanguageManager::getStandardLanguageList()
*/
public static function createFromLangcode($langcode) {
$standard_languages = LanguageManager::getStandardLanguageList();
if (!isset($standard_languages[$langcode])) {
// Drupal does not know about this language, so we set its values with the
// best guess. The user will be able to edit afterwards.
return static::create([
'id' => $langcode,
'label' => $langcode,
]);
}
else {
// A known predefined language, details will be filled in properly.
return static::create([
'id' => $langcode,
'label' => $standard_languages[$langcode][0],
'direction' => $standard_languages[$langcode][2] ?? static::DIRECTION_LTR,
]);
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
CacheableDependencyTrait:: |
protected | property | Cache contexts. | |
CacheableDependencyTrait:: |
protected | property | Cache max-age. | |
CacheableDependencyTrait:: |
protected | property | Cache tags. | |
CacheableDependencyTrait:: |
protected | function | Sets cacheability; useful for value object constructors. | |
ConfigEntityBase:: |
private | property | Whether the config is being deleted by the uninstall process. | |
ConfigEntityBase:: |
protected | property | The language code of the entity's default language. | |
ConfigEntityBase:: |
protected | property | The original ID of the configuration entity. | |
ConfigEntityBase:: |
protected | property | The enabled/disabled status of the configuration entity. | 4 |
ConfigEntityBase:: |
protected | property | Third party entity settings. | |
ConfigEntityBase:: |
protected | property | Trust supplied data and not use configuration schema on save. | |
ConfigEntityBase:: |
protected | property | The UUID for this entity. | |
ConfigEntityBase:: |
protected | property | ||
ConfigEntityBase:: |
protected | function | Overrides \Drupal\Core\Entity\DependencyTrait:addDependency(). | |
ConfigEntityBase:: |
public | function |
Calculates dependencies and stores them in the dependency property. Overrides ConfigEntityInterface:: |
13 |
ConfigEntityBase:: |
public | function |
Creates a duplicate of the entity. Overrides EntityBase:: |
1 |
ConfigEntityBase:: |
public | function |
Disables the configuration entity. Overrides ConfigEntityInterface:: |
1 |
ConfigEntityBase:: |
public | function |
Enables the configuration entity. Overrides ConfigEntityInterface:: |
|
ConfigEntityBase:: |
public | function |
Returns the value of a property. Overrides ConfigEntityInterface:: |
|
ConfigEntityBase:: |
public | function |
Returns the cache tags that should be used to invalidate caches. Overrides EntityBase:: |
1 |
ConfigEntityBase:: |
public | function |
Gets the configuration dependency name. Overrides EntityBase:: |
|
ConfigEntityBase:: |
protected static | function | Gets the configuration manager. | |
ConfigEntityBase:: |
public | function |
Gets the configuration target identifier for the entity. Overrides EntityBase:: |
|
ConfigEntityBase:: |
public | function |
Gets the configuration dependencies. Overrides ConfigEntityInterface:: |
|
ConfigEntityBase:: |
public | function |
Gets the original ID. Overrides EntityBase:: |
|
ConfigEntityBase:: |
public | function |
Gets the list of third parties that store information. Overrides ThirdPartySettingsInterface:: |
|
ConfigEntityBase:: |
public | function |
Gets the value of a third-party setting. Overrides ThirdPartySettingsInterface:: |
|
ConfigEntityBase:: |
public | function |
Gets all third-party settings of a given module. Overrides ThirdPartySettingsInterface:: |
|
ConfigEntityBase:: |
protected | function | Gets the typed config manager. | |
ConfigEntityBase:: |
public | function |
Gets whether on not the data is trusted. Overrides ConfigEntityInterface:: |
|
ConfigEntityBase:: |
protected static | function |
Override to never invalidate the individual entities' cache tags; the
config system already invalidates them. Overrides EntityBase:: |
|
ConfigEntityBase:: |
protected | function |
Override to never invalidate the entity's cache tag; the config system
already invalidates it. Overrides EntityBase:: |
|
ConfigEntityBase:: |
public | function |
Checks whether this entity is installable. Overrides ConfigEntityInterface:: |
2 |
ConfigEntityBase:: |
public | function |
Overrides Entity::isNew(). Overrides EntityBase:: |
|
ConfigEntityBase:: |
public | function |
Returns whether this entity is being changed during the uninstall process. Overrides ConfigEntityInterface:: |
|
ConfigEntityBase:: |
public | function |
Informs the entity that entities it depends on will be deleted. Overrides ConfigEntityInterface:: |
8 |
ConfigEntityBase:: |
public | function |
Saves an entity permanently. Overrides EntityBase:: |
1 |
ConfigEntityBase:: |
public | function |
Sets the value of a property. Overrides ConfigEntityInterface:: |
|
ConfigEntityBase:: |
public | function |
Sets the original ID. Overrides EntityBase:: |
|
ConfigEntityBase:: |
public | function |
Sets the status of the configuration entity. Overrides ConfigEntityInterface:: |
|
ConfigEntityBase:: |
public | function |
Sets the value of a third-party setting. Overrides ThirdPartySettingsInterface:: |
|
ConfigEntityBase:: |
public | function | ||
ConfigEntityBase:: |
public static | function | Helper callback for uasort() to sort configuration entities by weight and label. | 6 |
ConfigEntityBase:: |
public | function |
Returns whether the configuration entity is enabled. Overrides ConfigEntityInterface:: |
4 |
ConfigEntityBase:: |
public | function |
Gets an array of all property values. Overrides EntityBase:: |
2 |
ConfigEntityBase:: |
public | function |
Gets the URL object for the entity. Overrides EntityBase:: |
|
ConfigEntityBase:: |
public | function |
Sets that the data should be trusted. Overrides ConfigEntityInterface:: |
|
ConfigEntityBase:: |
public | function |
Unsets a third-party setting. Overrides ThirdPartySettingsInterface:: |
|
ConfigEntityBase:: |
public | function |
Constructs an Entity object. Overrides EntityBase:: |
6 |
ConfigEntityBase:: |
public | function |
Overrides EntityBase:: |
3 |
ConfigurableLanguage:: |
protected | property | The direction of language, either DIRECTION_LTR or DIRECTION_RTL. | |
ConfigurableLanguage:: |
protected | property | The language ID (machine name). | |
ConfigurableLanguage:: |
protected | property | The human-readable label for the language. | |
ConfigurableLanguage:: |
protected | property | Locked languages cannot be edited. | |
ConfigurableLanguage:: |
protected | property | Used during saving to detect when the site becomes multilingual. | |
ConfigurableLanguage:: |
protected | property | The weight of the language, used in lists of languages. | |
ConfigurableLanguage:: |
public static | function | Creates a configurable language object from a langcode. | |
ConfigurableLanguage:: |
protected static | function | Gets the default langcode. | |
ConfigurableLanguage:: |
public | function |
Gets the text direction (left-to-right or right-to-left). Overrides LanguageInterface:: |
|
ConfigurableLanguage:: |
public | function |
Gets the ID (language code). Overrides LanguageInterface:: |
|
ConfigurableLanguage:: |
public | function |
Gets the name of the language. Overrides LanguageInterface:: |
|
ConfigurableLanguage:: |
public | function |
Gets the weight of the language. Overrides LanguageInterface:: |
|
ConfigurableLanguage:: |
public | function |
Returns whether this language is the default language. Overrides LanguageInterface:: |
|
ConfigurableLanguage:: |
public | function |
Returns whether this language is locked. Overrides LanguageInterface:: |
|
ConfigurableLanguage:: |
public static | function |
Acts on deleted entities before the delete hook is invoked. Overrides EntityBase:: |
|
ConfigurableLanguage:: |
public | function |
Acts on a saved entity before the insert or update hook is invoked. Overrides EntityBase:: |
|
ConfigurableLanguage:: |
public static | function |
Overrides ConfigEntityBase:: |
|
ConfigurableLanguage:: |
public | function |
Acts on an entity before the presave hook is invoked. Overrides ConfigEntityBase:: |
|
ConfigurableLanguage:: |
public | function |
Sets the name of the language. Overrides ConfigurableLanguageInterface:: |
|
ConfigurableLanguage:: |
public | function |
Sets the weight of the language. Overrides ConfigurableLanguageInterface:: |
|
DependencySerializationTrait:: |
protected | property | ||
DependencySerializationTrait:: |
protected | property | ||
DependencySerializationTrait:: |
public | function | Aliased as: traitSleep | 2 |
DependencySerializationTrait:: |
public | function | 2 | |
DependencyTrait:: |
protected | property | The object's dependencies. | |
DependencyTrait:: |
protected | function | Adds multiple dependencies. | |
DependencyTrait:: |
protected | function | Adds a dependency. Aliased as: addDependencyTrait | |
EntityBase:: |
protected | property | Boolean indicating whether the entity should be forced to be new. | |
EntityBase:: |
protected | property | The entity type. | |
EntityBase:: |
protected | property | A typed data object wrapping this entity. | |
EntityBase:: |
public | function | 1 | |
EntityBase:: |
public | function | 1 | |
EntityBase:: |
public static | function | 1 | |
EntityBase:: |
public | function | 2 | |
EntityBase:: |
public | function | ||
EntityBase:: |
protected | function | Gets the entity type bundle info service. | |
EntityBase:: |
protected | function | Gets the entity type manager. | |
EntityBase:: |
public | function | ||
EntityBase:: |
public | function | ||
EntityBase:: |
public | function | ||
EntityBase:: |
public | function | ||
EntityBase:: |
public | function | ||
EntityBase:: |
public | function | ||
EntityBase:: |
protected | function | The list cache tags to invalidate for this entity. | |
EntityBase:: |
public | function | ||
EntityBase:: |
private | function | Returns the typed data class name for this entity. | |
EntityBase:: |
public | function | ||
EntityBase:: |
public | function | 10 | |
EntityBase:: |
public | function | 5 | |
EntityBase:: |
public | function | 1 | |
EntityBase:: |
protected | function | Gets the language manager. | |
EntityBase:: |
protected | function | Gets an array link templates. | |
EntityBase:: |
public static | function | ||
EntityBase:: |
public static | function | ||
EntityBase:: |
public | function | 4 | |
EntityBase:: |
public static | function | 3 | |
EntityBase:: |
public static | function | 5 | |
EntityBase:: |
public | function | 1 | |
EntityBase:: |
public | function | ||
EntityBase:: |
public | function | ||
EntityBase:: |
protected | function | Gets an array of placeholders for this entity. | 1 |
EntityBase:: |
public | function | 1 | |
EntityBase:: |
protected | function | Gets the UUID generator. | |
LanguageInterface:: |
constant | Language written left to right. Possible value of $language->direction. | ||
LanguageInterface:: |
constant | Language written right to left. Possible value of $language->direction. | ||
LanguageInterface:: |
constant | Language code referring to the default language of data, e.g. of an entity. | ||
LanguageInterface:: |
constant | The language code used when the marked object has no linguistic content. | ||
LanguageInterface:: |
constant | The language code used when no language is explicitly assigned (yet). | ||
LanguageInterface:: |
constant | Language code referring to site's default language. | ||
LanguageInterface:: |
constant | Special system language code (only applicable to UI language). | ||
LanguageInterface:: |
constant | The language state used when referring to all languages. | ||
LanguageInterface:: |
constant | The language state when referring to configurable languages. | ||
LanguageInterface:: |
constant | The language state when referring to locked languages. | ||
LanguageInterface:: |
constant | The language state used when referring to the site's default language. | ||
LanguageInterface:: |
constant | The type of language used to define the content language. | ||
LanguageInterface:: |
constant | The type of language used to select the user interface. | ||
LanguageInterface:: |
constant | The type of language used for URLs. | ||
LanguageInterface:: |
constant | A regex for validating language codes according to W3C specifications. | ||
PluginDependencyTrait:: |
protected | function | Calculates and adds dependencies of a specific plugin instance. | 1 |
PluginDependencyTrait:: |
protected | function | Calculates and returns dependencies of a specific plugin instance. | |
PluginDependencyTrait:: |
protected | function | Wraps the module handler. | 1 |
PluginDependencyTrait:: |
protected | function | Wraps the theme handler. | 1 |
RefinableCacheableDependencyTrait:: |
public | function | ||
RefinableCacheableDependencyTrait:: |
public | function | ||
RefinableCacheableDependencyTrait:: |
public | function | ||
RefinableCacheableDependencyTrait:: |
public | function | ||
SynchronizableEntityTrait:: |
protected | property | Whether this entity is being created, updated or deleted through a synchronization process. | |
SynchronizableEntityTrait:: |
public | function | ||
SynchronizableEntityTrait:: |
public | function |