/** * {@inheritdoc} */ public function initializeType($type) { $language = NULL; if ($this->currentUser) { // Execute the language negotiation methods in the order they were set up // and return the first valid language found. foreach ($this->getEnabledNegotiators($type) as $method_id => $info) { if (!isset($this->negotiatedLanguages[$method_id])) { $this->negotiatedLanguages[$method_id] = $this->negotiateLanguage($type, $method_id); } // Since objects are references, we need to return a clone to prevent // the language negotiation method cache from being unintentionally // altered. The same methods might be used with different language types // based on configuration. $language = !empty($this->negotiatedLanguages[$method_id]) ? clone $this->negotiatedLanguages[$method_id] : NULL; if ($language) { $this->getNegotiationMethodInstance($method_id)->persist($language); break; } } } if (!$language) { // If no other language was found use the default one. $language = $this->languageManager->getDefaultLanguage(); $method_id = static::METHOD_ID; } return array($method_id => $language); }