Builds the browser language negotiation method configuration form.
function language_negotiation_configure_browser_form($form, &$form_state) {
$form = array();
// Initialize a language list to the ones available, including English.
$languages = language_list();
$existing_languages = array();
foreach ($languages as $langcode => $language) {
$existing_languages[$langcode] = $language->name;
}
// If we have no languages available, present the list of predefined languages
// only. If we do have already added languages, set up two option groups with
// the list of existing and then predefined languages.
if (empty($existing_languages)) {
$language_options = language_admin_predefined_list();
$default = key($language_options);
}
else {
$default = key($existing_languages);
$language_options = array(
t('Existing languages') => $existing_languages,
t('Languages not yet added') => language_admin_predefined_list(),
);
}
$form['mappings'] = array(
'#tree' => TRUE,
'#theme' => 'language_negotiation_configure_browser_form_table',
);
$mappings = language_get_browser_drupal_langcode_mappings();
foreach ($mappings as $browser_langcode => $drupal_langcode) {
$form['mappings'][$browser_langcode] = array(
'browser_langcode' => array(
'#type' => 'textfield',
'#default_value' => $browser_langcode,
'#size' => 20,
'#required' => TRUE,
),
'drupal_langcode' => array(
'#type' => 'select',
'#options' => $language_options,
'#default_value' => $drupal_langcode,
'#required' => TRUE,
),
);
}
// Add empty row.
$form['new_mapping'] = array(
'#type' => 'details',
'#title' => t('Add a new mapping'),
'#collapsed' => TRUE,
'#tree' => TRUE,
);
$form['new_mapping']['browser_langcode'] = array(
'#type' => 'textfield',
'#title' => t('Browser language code'),
'#description' => t('Use language codes as <a href="@w3ctags">defined by the W3C</a> for interoperability. <em>Examples: "en", "en-gb" and "zh-hant".</em>', array(
'@w3ctags' => 'http://www.w3.org/International/articles/language-tags/',
)),
'#default_value' => '',
'#size' => 20,
);
$form['new_mapping']['drupal_langcode'] = array(
'#type' => 'select',
'#title' => t('Drupal language'),
'#options' => $language_options,
'#default_value' => '',
);
$form['actions']['#type'] = 'actions';
$form['actions']['submit'] = array(
'#type' => 'submit',
'#value' => t('Save configuration'),
);
return $form;
}