function _install_config_locale_overrides in Drupal 10
Creates a batch to process config translations after installing from config.
This ensures that the logic from LocaleConfigSubscriber::onConfigSave() is run on sites after installing from configuration so updating translations from PO files does not result in overwriting customizations.
Return value
array The batch definition.
See also
\Drupal\locale\LocaleConfigSubscriber::onConfigSave()
1 call to _install_config_locale_overrides()
- install_finish_translations in core/
includes/ install.core.inc - Finishes importing files at end of installation.
File
- core/
includes/ install.core.inc, line 2468 - API functions for installing Drupal.
Code
function _install_config_locale_overrides() {
// @todo https://www.drupal.org/project/drupal/issues/3252244 Somehow the
// config cache gets filled up with junk after installing from
// configuration.
\Drupal::service('cache.config')
->deleteAll();
// Get the services we need.
$language_manager = \Drupal::languageManager();
/** @var \Drupal\locale\LocaleConfigManager $locale_config_manager */
$locale_config_manager = \Drupal::service('locale.config_manager');
$langcodes = array_keys($language_manager
->getLanguages());
if (count($langcodes) > 1 && !$language_manager instanceof ConfigurableLanguageManagerInterface) {
throw new \LogicException('There are multiple languages and the language manager is not an instance of ConfigurableLanguageManagerInterface');
}
$batch_builder = (new BatchBuilder())
->setFile('core/includes/install.core.inc')
->setTitle(t('Updating configuration translations'))
->setInitMessage(t('Starting configuration update'))
->setErrorMessage(t('Error updating configuration translations'));
$i = 0;
$batch_names = [];
foreach ($locale_config_manager
->getComponentNames() as $name) {
$batch_names[] = $name;
$i++;
// During installation the caching of configuration objects is disabled so
// it is very expensive to initialize the \Drupal::config() object on each
// request. We batch a small number of configuration object upgrades
// together to improve the overall performance of the process.
if ($i % 20 == 0) {
$batch_builder
->addOperation('_install_config_locale_overrides_process_batch', [
$batch_names,
$langcodes,
]);
$batch_names = [];
}
}
if (!empty($batch_names)) {
$batch_builder
->addOperation('_install_config_locale_overrides_process_batch', [
$batch_names,
$langcodes,
]);
}
return $batch_builder
->toArray();
}