public function LanguageNegotiator::initializeType in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/language/src/LanguageNegotiator.php \Drupal\language\LanguageNegotiator::initializeType()
Initializes the specified language type.
Parameters
string $type: The language type to be initialized.
Return value
\Drupal\Core\Language\LanguageInterface[] Returns an array containing a single language keyed by the language negotiation method ID used to determine the language of the specified type. If negotiation is not possible the default language is returned.
Overrides LanguageNegotiatorInterface::initializeType
File
- core/
modules/ language/ src/ LanguageNegotiator.php, line 128 - Contains \Drupal\language\LanguageNegotiator.
Class
- LanguageNegotiator
- Class responsible for performing language negotiation.
Namespace
Drupal\languageCode
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,
);
}