diff --git a/core/modules/language/language.admin.inc b/core/modules/language/language.admin.inc index b078d23..e6ab744 100644 --- a/core/modules/language/language.admin.inc +++ b/core/modules/language/language.admin.inc @@ -22,7 +22,6 @@ function language_admin_overview_form($form, &$form_state) { '#type' => 'table', '#header' => array( t('Name'), - t('Default'), t('Weight'), t('Operations'), ), @@ -36,15 +35,6 @@ function language_admin_overview_form($form, &$form_state) { $form['languages'][$langcode]['name'] = array( '#markup' => check_plain($language->name), ); - $form['languages'][$langcode]['default'] = array( - '#type' => 'radio', - '#parents' => array('site_default'), - '#title' => t('Set @title as default', array('@title' => $language->name)), - '#title_display' => 'invisible', - '#return_value' => $langcode, - '#default_value' => ($langcode == $default->langcode ? $langcode : NULL), - '#id' => 'edit-site-default-' . $langcode, - ); $form['languages'][$langcode]['weight'] = array( '#type' => 'weight', '#title' => t('Weight for @title', array('@title' => $language->name)), @@ -87,10 +77,8 @@ function language_admin_overview_form($form, &$form_state) { */ function language_admin_overview_form_submit($form, &$form_state) { $languages = language_list(); - $old_default = language_default(); foreach ($languages as $langcode => $language) { - $language->default = ($form_state['values']['site_default'] == $langcode); $language->weight = $form_state['values']['languages'][$langcode]['weight']; language_save($language); } diff --git a/core/modules/language/language.module b/core/modules/language/language.module index 3486ff4..09e700b 100644 --- a/core/modules/language/language.module +++ b/core/modules/language/language.module @@ -24,7 +24,7 @@ function language_help($path, $arg) { return $output; case 'admin/config/regional/language': - return '
' . t('With multiple languages enabled, registered users may select their preferred language and authors can assign a specific language to content.') . '
'; + return '' . t('With multiple languages enabled, registered users may select their preferred language and authors can assign a specific language to content. Default language can be changed at Regional settings page.', array('@region-settings' => url('admin/config/regional/settings'))) . '
'; case 'admin/config/regional/language/add': return '' . t('Add a language to be supported by your site. If your desired language is not available, pick Custom language... at the end and provide a language code and other details manually.') . '
'; @@ -878,3 +878,34 @@ function language_update_locked_weights() { ->execute(); } } + +/** + * Implements hook_form_FORM_ID_alter. + */ +function language_form_system_regional_settings_alter(&$form, &$form_state) { + $languages = language_list(); + $default = language_default(); + foreach ($languages as $key => $language) { + $language_options[$key] = $language->name; + } + $form['locale']['site_default_language'] = array( + '#type' => 'select', + '#title' => t('Default language'), + '#default_value' => $default->langcode, + '#options' => $language_options, + '#description' => t('It is not recommended to change the default language of a working site, use default language in the detection and selection page instead.', array('@language-detection' => url('admin/config/regional/language/detection'))), + '#weight' => -1, + ); + // Add submit handler to save default language. + $form['#submit'][] = 'language_system_regional_settings_form_submit'; +} + +/** + * Form submission handler for system_regional_settings form alter. + */ +function language_system_regional_settings_form_submit($form, &$form_state) { + $languages = language_list(); + $language = $languages[$form_state['values']['site_default_language']]; + $language->default = TRUE; + language_save($language); +} diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageConfigurationTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageConfigurationTest.php index 3260717..65d78c8 100644 --- a/core/modules/language/lib/Drupal/language/Tests/LanguageConfigurationTest.php +++ b/core/modules/language/lib/Drupal/language/Tests/LanguageConfigurationTest.php @@ -36,7 +36,7 @@ function testLanguageConfiguration() { global $base_url; // User to add and remove language. - $admin_user = $this->drupalCreateUser(array('administer languages', 'access administration pages')); + $admin_user = $this->drupalCreateUser(array('administer languages', 'access administration pages', 'administer site configuration')); $this->drupalLogin($admin_user); // Check if the Default English language has no path prefix. @@ -59,17 +59,18 @@ function testLanguageConfiguration() { $this->assertFieldByXPath('//input[@name="prefix[fr]"]', 'fr', 'French has a path prefix.'); // Check if we can change the default language. - $this->drupalGet('admin/config/regional/language'); - $this->assertFieldChecked('edit-site-default-en', 'English is the default language.'); + $this->drupalGet('admin/config/regional/settings'); + $this->assertOptionSelected('edit-site-default-language', 'en', 'English is the default language.'); + // Change the default language. $edit = array( - 'site_default' => 'fr', + 'site_default_language' => 'fr', ); $this->drupalPost(NULL, $edit, t('Save configuration')); - $this->assertNoFieldChecked('edit-site-default-en', 'Default language updated.'); - $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), 'Correct page redirection.'); + $this->assertOptionSelected('edit-site-default-language', 'fr', 'Default language updated.'); + $this->assertEqual($this->getUrl(), url('admin/config/regional/setting', array('absolute' => TRUE)), 'Correct page redirection.'); - // Check if a valid language prefix is added afrer changing the default + // Check if a valid language prefix is added after changing the default // language. $this->drupalGet('admin/config/regional/language/detection/url'); $this->assertFieldByXPath('//input[@name="prefix[en]"]', 'en', 'A valid path prefix has been added to the previous default language.');