Same filename and directory in other branches
- 8.9.x core/modules/language/src/LanguageServiceProvider.php
- 9 core/modules/language/src/LanguageServiceProvider.php
Namespace
Drupal\language
File
core/modules/language/src/LanguageServiceProvider.php
View source
<?php
namespace Drupal\language;
use Drupal\Core\Config\BootstrapConfigStorageFactory;
use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Core\DependencyInjection\ServiceProviderBase;
use Drupal\Core\Language\LanguageInterface;
use Symfony\Component\DependencyInjection\Reference;
class LanguageServiceProvider extends ServiceProviderBase {
const CONFIG_PREFIX = 'language.entity.';
public function register(ContainerBuilder $container) {
if ($this
->isMultilingual()) {
$container
->register('language_request_subscriber', 'Drupal\\language\\EventSubscriber\\LanguageRequestSubscriber')
->addTag('event_subscriber')
->addArgument(new Reference('language_manager'))
->addArgument(new Reference('language_negotiator'))
->addArgument(new Reference('string_translation'))
->addArgument(new Reference('current_user'));
$container
->register('path_processor_language', 'Drupal\\language\\HttpKernel\\PathProcessorLanguage')
->addTag('path_processor_inbound', [
'priority' => 300,
])
->addTag('path_processor_outbound', [
'priority' => 100,
])
->addArgument(new Reference('config.factory'))
->addArgument(new Reference('language_manager'))
->addArgument(new Reference('language_negotiator'))
->addArgument(new Reference('current_user'))
->addArgument(new Reference('language.config_subscriber'))
->addMethodCall('initConfigSubscriber');
}
}
public function alter(ContainerBuilder $container) {
$definition = $container
->getDefinition('language_manager');
$definition
->setClass('Drupal\\language\\ConfigurableLanguageManager')
->addArgument(new Reference('config.factory'))
->addArgument(new Reference('module_handler'))
->addArgument(new Reference('language.config_factory_override'))
->addArgument(new Reference('request_stack'));
if ($default_language_values = $this
->getDefaultLanguageValues()) {
$container
->setParameter('language.default_values', $default_language_values);
}
}
protected function isMultilingual() {
$prefix = static::CONFIG_PREFIX;
$config_storage = BootstrapConfigStorageFactory::get();
$config_ids = array_filter($config_storage
->listAll($prefix), function ($config_id) use ($prefix) {
return $config_id != $prefix . LanguageInterface::LANGCODE_NOT_SPECIFIED && $config_id != $prefix . LanguageInterface::LANGCODE_NOT_APPLICABLE;
});
return count($config_ids) > 1;
}
protected function getDefaultLanguageValues() {
$config_storage = BootstrapConfigStorageFactory::get();
$system = $config_storage
->read('system.site');
if ($system === FALSE) {
return FALSE;
}
$default_language = $config_storage
->read(static::CONFIG_PREFIX . $system['default_langcode']);
if (is_array($default_language)) {
return $default_language;
}
return FALSE;
}
}
Classes