class LocaleDefaultConfigStorage
Same name in other branches
- 9 core/modules/locale/src/LocaleDefaultConfigStorage.php \Drupal\locale\LocaleDefaultConfigStorage
- 8.9.x core/modules/locale/src/LocaleDefaultConfigStorage.php \Drupal\locale\LocaleDefaultConfigStorage
- 11.x core/modules/locale/src/LocaleDefaultConfigStorage.php \Drupal\locale\LocaleDefaultConfigStorage
Provides access to default configuration for locale integration.
Allows unified access to default configuration from one of three sources:
- Required default configuration (config/install/*)
- Optional default configuration (config/optional/*)
- Predefined languages mocked as default configuration (list defined in LocaleConfigManagerInterface::getStandardLanguageList())
These sources are considered equal in terms of how locale module interacts with them for translation. Their translatable source strings are exposed for interface translation and participate in remote translation updates.
Hierarchy
- class \Drupal\locale\LocaleDefaultConfigStorage
Expanded class hierarchy of LocaleDefaultConfigStorage
1 file declares its use of LocaleDefaultConfigStorage
- LocaleDefaultConfigStorageTest.php in core/
modules/ locale/ tests/ src/ Kernel/ LocaleDefaultConfigStorageTest.php
1 string reference to 'LocaleDefaultConfigStorage'
- locale.services.yml in core/
modules/ locale/ locale.services.yml - core/modules/locale/locale.services.yml
1 service uses LocaleDefaultConfigStorage
- locale.default.config.storage in core/
modules/ locale/ locale.services.yml - Drupal\locale\LocaleDefaultConfigStorage
File
-
core/
modules/ locale/ src/ LocaleDefaultConfigStorage.php, line 22
Namespace
Drupal\localeView source
class LocaleDefaultConfigStorage {
/**
* The storage instance for reading configuration data.
*
* @var \Drupal\Core\Config\StorageInterface
*/
protected $configStorage;
/**
* The language manager.
*
* @var \Drupal\language\ConfigurableLanguageManagerInterface
*/
protected $languageManager;
/**
* The storage instance for reading required default configuration data.
*
* @var \Drupal\Core\Config\StorageInterface
*/
protected $requiredInstallStorage;
/**
* The storage instance for reading optional default configuration data.
*
* @var \Drupal\Core\Config\StorageInterface
*/
protected $optionalInstallStorage;
/**
* Constructs a LocaleDefaultConfigStorage.
*
* @param \Drupal\Core\Config\StorageInterface $config_storage
* The storage object to use for reading configuration data.
* @param \Drupal\language\ConfigurableLanguageManagerInterface $language_manager
* The language manager.
* @param string $install_profile
* The current installation profile.
*/
public function __construct(StorageInterface $config_storage, ConfigurableLanguageManagerInterface $language_manager, $install_profile) {
$this->configStorage = $config_storage;
$this->languageManager = $language_manager;
$this->requiredInstallStorage = new ExtensionInstallStorage($this->configStorage, ExtensionInstallStorage::CONFIG_INSTALL_DIRECTORY, ExtensionInstallStorage::DEFAULT_COLLECTION, TRUE, $install_profile);
$this->optionalInstallStorage = new ExtensionInstallStorage($this->configStorage, ExtensionInstallStorage::CONFIG_OPTIONAL_DIRECTORY, ExtensionInstallStorage::DEFAULT_COLLECTION, TRUE, $install_profile);
}
/**
* Read a configuration from install storage or default languages.
*
* @param string $name
* Configuration object name.
*
* @return array
* Configuration data from install storage or default language.
*/
public function read($name) {
if ($this->requiredInstallStorage
->exists($name)) {
return $this->requiredInstallStorage
->read($name);
}
elseif ($this->optionalInstallStorage
->exists($name)) {
return $this->optionalInstallStorage
->read($name);
}
elseif (str_starts_with($name, 'language.entity.')) {
// Simulate default languages as if they were shipped as default
// configuration.
$langcode = str_replace('language.entity.', '', $name);
$predefined_languages = $this->languageManager
->getStandardLanguageList();
if (isset($predefined_languages[$langcode])) {
$data = $this->configStorage
->read($name);
$data['label'] = $predefined_languages[$langcode][0];
return $data;
}
}
}
/**
* Return the list of configuration in install storage and current languages.
*
* @return array
* List of configuration in install storage and current languages.
*/
public function listAll() {
$languages = $this->predefinedConfiguredLanguages();
return array_unique(array_merge($this->requiredInstallStorage
->listAll(), $this->optionalInstallStorage
->listAll(), $languages));
}
/**
* Get all configuration names and folders for a list of modules or themes.
*
* @param string $type
* Type of components: 'module' | 'theme' | 'profile'
* @param array $list
* Array of theme or module names.
*
* @return array
* Configuration names provided by that component. In case of language
* module this list is extended with configured languages that have
* predefined names as well.
*/
public function getComponentNames($type, array $list) {
$names = array_unique(array_merge(array_keys($this->requiredInstallStorage
->getComponentNames($list)), array_keys($this->optionalInstallStorage
->getComponentNames($list))));
if ($type == 'module' && in_array('language', $list)) {
$languages = $this->predefinedConfiguredLanguages();
$names = array_unique(array_merge($names, $languages));
}
return $names;
}
/**
* Compute the list of configuration names that match predefined languages.
*
* @return array
* The list of configuration names that match predefined languages.
*/
protected function predefinedConfiguredLanguages() {
$names = $this->configStorage
->listAll('language.entity.');
$predefined_languages = $this->languageManager
->getStandardLanguageList();
foreach ($names as $id => $name) {
$langcode = str_replace('language.entity.', '', $name);
if (!isset($predefined_languages[$langcode])) {
unset($names[$id]);
}
}
return array_values($names);
}
}
Members
Title Sort descending | Modifiers | Object type | Summary |
---|---|---|---|
LocaleDefaultConfigStorage::$configStorage | protected | property | The storage instance for reading configuration data. |
LocaleDefaultConfigStorage::$languageManager | protected | property | The language manager. |
LocaleDefaultConfigStorage::$optionalInstallStorage | protected | property | The storage instance for reading optional default configuration data. |
LocaleDefaultConfigStorage::$requiredInstallStorage | protected | property | The storage instance for reading required default configuration data. |
LocaleDefaultConfigStorage::getComponentNames | public | function | Get all configuration names and folders for a list of modules or themes. |
LocaleDefaultConfigStorage::listAll | public | function | Return the list of configuration in install storage and current languages. |
LocaleDefaultConfigStorage::predefinedConfiguredLanguages | protected | function | Compute the list of configuration names that match predefined languages. |
LocaleDefaultConfigStorage::read | public | function | Read a configuration from install storage or default languages. |
LocaleDefaultConfigStorage::__construct | public | function | Constructs a LocaleDefaultConfigStorage. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.