1 language.inc language_types_initialize($type)

Chooses a language based on language negotiation provider settings.


$type: The type of language to retrieve as provided by hook_language_types_info(). In Backdrop core, the available language types will be one of the following:

  • language
  • language_content
  • language_url

Return value

The negotiated language object.:

Related topics


core/includes/language.inc, line 114
Language Negotiation API.


function language_types_initialize($type) {
  // Execute the language negotiation providers in the order they were set up
  // and return the first valid language found.
  $negotiation_order = language_negotiation_order($type);

  if (empty($negotiation_order)) {
    $language_types = language_types_info();
    if (isset($language_types[$type]['fixed'])) {
      $negotiation_order = $language_types[$type]['fixed'];

  foreach ($negotiation_order as $provider_id) {
    $language = language_provider_invoke($provider_id);
    if ($language) {
      // Remember the provider key used to detect the language.
      $language->provider = $provider_id;
      return $language;

  // If no other language was found use the default one.
  $language = language_default();
  $language->provider = LANGUAGE_NEGOTIATION_DEFAULT;
  return $language;