Returns the language object for a given language type.
The 'language_manager' service is only available within the scope of a kernel request. When it's not available, we return a default language object, regardless of the type passed in.
string $type: The type of language object needed, e.g. LANGUAGE_TYPE_INTERFACE.
bool $reset: TRUE to reset the statically cached language object for the type, or for all types if $type is NULL.
Drupal\Core\Language\LanguageManager
function language($type, $reset = FALSE) {
// We don't use drupal_static() here because resetting is not a simple case of
// drupal_static_reset().
static $languages = array();
// Reset the language manager's cache and our own.
if ($reset) {
if (drupal_container()
->isScopeActive('request')) {
drupal_container()
->get('language_manager')
->reset($type);
}
if (!isset($type)) {
$languages = array();
}
elseif (isset($languages[$type])) {
unset($languages[$type]);
}
}
// If no type is passed (most likely when resetting all types), return.
if (!isset($type)) {
return;
}
// When the language_manager service exists (is both defined and the 'request'
// scope is active in the container), use it to get the language. Otherwise
// return the default language.
if (drupal_container()
->isScopeActive('request')) {
$language_manager = drupal_container()
->get('language_manager', Container::NULL_ON_INVALID_REFERENCE);
}
if (isset($language_manager)) {
return $language_manager
->getLanguage($type);
}
else {
if (!isset($languages[$type])) {
$languages[$type] = language_default();
}
return $languages[$type];
}
}