language_provider_invoke

Versions
7
language_provider_invoke($provider_id, $provider = NULL)

Helper function used to cache the language providers results.

Parameters

$provider_id The language provider ID.

$provider The language provider to be invoked. If not passed it will be explicitly loaded through language_negotiation_info().

Return value

The language provider's return value.

▾ 1 function calls language_provider_invoke()

language_initialize in includes/language.inc
Choose a language for the given type based on language negotiation settings.

Code

includes/language.inc, line 247

<?php
function language_provider_invoke($provider_id, $provider = NULL) {
  $results = &drupal_static(__FUNCTION__);

  if (!isset($results[$provider_id])) {
    global $user;

    // Get languages grouped by status and select only the enabled ones.
    $languages = language_list('enabled');
    $languages = $languages[1];

    if (!isset($provider)) {
      $providers = language_negotiation_info();
      $provider = $providers[$provider_id];
    }

    if (isset($provider['file'])) {
      require_once DRUPAL_ROOT . '/' . $provider['file'];
    }

    // If the language provider has no cache preference or this is satisified
    // we can execute the callback.
    $cache = !isset($provider['cache']) || $user->uid || $provider['cache'] == variable_get('cache', CACHE_DISABLED);
    $callback = isset($provider['callbacks']['language']) ? $provider['callbacks']['language'] : FALSE;
    $langcode = $cache && function_exists($callback) ? $callback($languages) : FALSE;
    $results[$provider_id] = isset($languages[$langcode]) ? $languages[$langcode] : FALSE;
  }

  return $results[$provider_id];
}
?>
Login or register to post comments
 
 

All source code and documentation on this site is released under the terms of the GNU General Public License, version 2 and later. Drupal is a registered trademark of Dries Buytaert.