function language_negotiation_configure_browser_form

Builds the browser language negotiation method configuration form.

1 string reference to 'language_negotiation_configure_browser_form'
language_menu in drupal/core/modules/language/language.module
Implements hook_menu().

File

drupal/core/modules/language/language.admin.inc, line 568
Administration functions for language.module.

Code

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;
}