Error message

You are browsing documentation for drupal 7.x, which is not supported anymore. Read the updated version of this page for drupal 11.x (the latest version).

function language_negotiation_set

Saves a list of language negotiation providers.

Parameters

$type: The language negotiation type.

$language_providers: An array of language negotiation provider weights keyed by provider ID. @see language_provider_weight()

Related topics

Language Negotiation API functionality
Functions to customize the language types and the negotiation process.
8 calls to language_negotiation_set()
language_negotiation_purge in includes/language.inc
Removes any unused language negotiation providers from the configuration.
language_types_set in includes/language.inc
Updates the language type configuration.
LocaleMultilingualFieldsFunctionalTest::testMultilingualNodeForm in modules/locale/locale.test
Test if field languages are correctly set through the node form.
LocaleUILanguageNegotiationTest::runTest in modules/locale/locale.test
LocaleUILanguageNegotiationTest::testLanguageDomain in modules/locale/locale.test
Tests url() when separate domains are used for multiple languages.

... See full list

File

includes/language.inc, line 347

Code

function language_negotiation_set ($type, $language_providers) {
 // Save only the necessary fields.
 $provider_fields = array(
 'callbacks',
 'file',
 'cache',
 );
 $negotiation = array();
 $providers_weight = array();
 $defined_providers = language_negotiation_info ();
 $default_types = language_types_configurable (FALSE);
 // Initialize the providers weight list.
 foreach ($language_providers as $id => $provider) {
 $providers_weight[$id] = language_provider_weight ($provider);
 }
 // Order providers list by weight.
 asort ($providers_weight);
 foreach ($providers_weight as $id => $weight) {
 if (isset($defined_providers[$id])) {
 $provider = $defined_providers[$id];
 // If the provider does not express any preference about types, make it
 // available for any configurable type.
 $types = array_flip (isset($provider['types']) ? $provider['types'] : $default_types);
 // Check whether the provider is defined and has the right type.
 if (isset($types[$type])) {
 $provider_data = array();
 foreach ($provider_fields as $field) {
 if (isset($provider[$field])) {
 $provider_data[$field] = $provider[$field];
 }
 }
 $negotiation[$id] = $provider_data;
 }
 }
 }
 variable_set ("language_negotiation_{$type}", $negotiation);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.