Process handler for the language_configuration form element.
function language_configuration_element_process($element, &$form_state, &$form) {
$options = isset($element['#options']) ? $element['#options'] : array();
// Avoid validation failure since we are moving the '#options' key in the
// nested 'language' select element.
unset($element['#options']);
$element['langcode'] = array(
'#type' => 'select',
'#title' => t('Default language'),
'#options' => $options + language_configuration_element_default_options(),
'#description' => t('Explanation of the language options is found on the <a href="@languages_list_page">languages list page</a>.', array(
'@languages_list_page' => url('admin/config/regional/language'),
)),
'#default_value' => isset($element['#default_value']['langcode']) ? $element['#default_value']['langcode'] : NULL,
);
$element['language_hidden'] = array(
'#type' => 'checkbox',
'#title' => t('Hide language selection'),
'#default_value' => isset($element['#default_value']['language_hidden']) ? $element['#default_value']['language_hidden'] : NULL,
'#description' => t('Language selector appears on create and edit pages.'),
);
// Add the entity type and bundle information to the form if they are set.
// They will be used, in the submit handler, to generate the names of the
// variables that will store the settings and are a way to uniquely identify
// the entity.
if (!isset($form_state['language'])) {
$form_state['language'] = array();
}
$form_state['language'] += array(
$element['#name'] => array(
'entity_type' => $element['#entity_information']['entity_type'],
'bundle' => $element['#entity_information']['bundle'],
),
);
return $element;
}