diff --git a/core/core.services.yml b/core/core.services.yml index 04e6ec0..61512e9 100644 --- a/core/core.services.yml +++ b/core/core.services.yml @@ -175,6 +175,7 @@ services: arguments: ['@event_dispatcher', '@service_container', '@controller_resolver'] language_manager: class: Drupal\Core\Language\LanguageManager + arguments: ['@?state'] string_translator.custom_strings: class: Drupal\Core\StringTranslation\Translator\CustomStrings tags: diff --git a/core/lib/Drupal/Core/Language/LanguageManager.php b/core/lib/Drupal/Core/Language/LanguageManager.php index d4e436f..b277dcb 100644 --- a/core/lib/Drupal/Core/Language/LanguageManager.php +++ b/core/lib/Drupal/Core/Language/LanguageManager.php @@ -8,6 +8,7 @@ namespace Drupal\Core\Language; use Symfony\Component\HttpFoundation\Request; +use Drupal\Core\KeyValueStore\KeyValueStoreInterface; /** * Class responsible for initializing each language type. @@ -22,6 +23,13 @@ class LanguageManager { protected $request; /** + * The Key/Value Store to use for state. + * + * @var \Drupal\Core\KeyValueStore\KeyValueStoreInterface + */ + protected $state = NULL; + + /** * An array of language objects keyed by language type. * * @var array @@ -46,6 +54,16 @@ class LanguageManager { protected $initializing = FALSE; /** + * Constructs an LanguageManager object. + * + * @param KeyValueStoreInterface $state + * The state keyvalue store. + */ + public function __construct(KeyValueStoreInterface $state = NULL) { + $this->state = $state; + } + + /** * Initializes each language type to a language object. */ public function init() { @@ -137,12 +155,16 @@ public function reset($type = NULL) { */ public function isMultilingual() { // @todo Inject state service here. - $container = \Drupal::getContainer(); - if ($container && $container->has('state')) { - $language_count = $container->get('state')->get('language.count') ?: 1; - return $language_count > 1; + if (!isset($this->state)) { + $container = \Drupal::getContainer(); + if ($container && $container->has('state')) { + $this->state = $container->get('state'); + } + else { + return FALSE; + } } - return FALSE; + return ($this->state->get('language.count') ?: 1) > 1; } /**