diff --git a/core/modules/language/config/language.mappings.yml b/core/modules/language/config/language.mappings.yml index e4ef2a1..4dcdb07 100644 --- a/core/modules/language/config/language.mappings.yml +++ b/core/modules/language/config/language.mappings.yml @@ -3,7 +3,5 @@ zh-tw: 'zh-hant' # Taiwan Chinese in traditional script zh-hk: 'zh-hant' # Hong Kong Chinese in traditional script zh-mo: 'zh-hant' # Macao Chinese in traditional script -zh-cht: 'zh-hant' # traditional Chinese zh-cn: 'zh-hans' # PRC Mainland Chinese in simplified script zh-sg: 'zh-hans' # Singapore Chinese in simplified script -zh-chs: 'zh-hans' # simplified Chinese diff --git a/core/modules/language/language.admin.inc b/core/modules/language/language.admin.inc index ee3dbd1..7cd623a 100644 --- a/core/modules/language/language.admin.inc +++ b/core/modules/language/language.admin.inc @@ -565,6 +565,11 @@ function language_negotiation_configure_form_submit($form, &$form_state) { /** * Builds the browser language negotiation method configuration form. + * + * @see language_negotiation_configure_browser_form_validate() + * @see language_negotiation_configure_browser_form_submit() + * + * @ingroup forms */ function language_negotiation_configure_browser_form($form, &$form_state) { $form = array(); @@ -582,13 +587,11 @@ function language_negotiation_configure_browser_form($form, &$form_state) { // 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() + t('Languages not yet added') => language_admin_predefined_list(), ); } @@ -601,12 +604,16 @@ function language_negotiation_configure_browser_form($form, &$form_state) { foreach ($mappings as $browser_langcode => $drupal_langcode) { $form['mappings'][$browser_langcode] = array( 'browser_langcode' => array( + '#title' => t('Browser language code'), + '#title_display' => 'invisible', '#type' => 'textfield', '#default_value' => $browser_langcode, '#size' => 20, '#required' => TRUE, ), 'drupal_langcode' => array( + '#title' => t('Site language'), + '#title_display' => 'invisible', '#type' => 'select', '#options' => $language_options, '#default_value' => $drupal_langcode, @@ -631,7 +638,7 @@ function language_negotiation_configure_browser_form($form, &$form_state) { ); $form['new_mapping']['drupal_langcode'] = array( '#type' => 'select', - '#title' => t('Drupal language'), + '#title' => t('Site language'), '#options' => $language_options, '#default_value' => '', ); @@ -665,9 +672,6 @@ function theme_language_negotiation_configure_browser_form_table($variables) { $links['delete'] = array( 'title' => t('Delete'), 'href' => "admin/config/regional/language/detection/browser/delete/$key", - 'attributes' => array( - 'class' => array('image-style-link'), - ), ); $row[] = array( 'data' => array( @@ -681,7 +685,7 @@ function theme_language_negotiation_configure_browser_form_table($variables) { $header = array( t('Browser language code'), - t('Drupal language'), + t('Site language'), t('Operations'), ); @@ -689,7 +693,8 @@ function theme_language_negotiation_configure_browser_form_table($variables) { '#theme' => 'table', '#header' => $header, '#rows' => $rows, - '#attributes' => array('id' => 'lang-neg-browser'), + '#empty' => t('No browser language mappings available.'), + '#attributes' => array('id' => 'language-negotiation-browser'), ); $output = drupal_render($table); @@ -698,6 +703,8 @@ function theme_language_negotiation_configure_browser_form_table($variables) { /** * Browser language negotiation form validation. + * + * @see language_negotiation_configure_browser_form_submit() */ function language_negotiation_configure_browser_form_validate($form, &$form_state) { // Array to check if all browser language codes are unique. @@ -724,10 +731,10 @@ function language_negotiation_configure_browser_form_validate($form, &$form_stat if (!empty($data['browser_langcode'])) { // Make sure browser_langcode is unique. if (array_key_exists($data['browser_langcode'], $unique_values)) { - form_set_error('mappings][' . $key . '][browser_langcode', t('Browser language codes must be unique.')); + form_set_error('mappings][new_mapping][browser_langcode', t('Browser language codes must be unique.')); } elseif (preg_match('/[^a-z\-]/', $data['browser_langcode'])) { - form_set_error('mappings][' . $key . '][browser_langcode', t('Browser language codes can only contain lowercase letters and a hyphen(-).')); + form_set_error('mappings][new_mapping][browser_langcode', t('Browser language codes can only contain lowercase letters and a hyphen(-).')); } $unique_values[$data['browser_langcode']] = $data['drupal_langcode']; } @@ -737,17 +744,24 @@ function language_negotiation_configure_browser_form_validate($form, &$form_stat /** * Browser language negotiation form submit. + * + * @see language_negotiation_configure_browser_form_validate() */ function language_negotiation_configure_browser_form_submit($form, &$form_state) { $mappings = $form_state['mappings']; if (!empty($mappings)) { language_set_browser_drupal_langcode_mappings($mappings); + drupal_set_message('The configuration options have been saved.'); } $form_state['redirect'] = 'admin/config/regional/language/detection'; } /** * Form for deleting a browser language negotiation mapping. + * + * @see language_negotiation_configure_browser_delete_form_submit() + * + * @ingroup forms */ function language_negotiation_configure_browser_delete_form($form, &$form_state, $browser_langcode) { $form_state['browser_langcode'] = $browser_langcode; @@ -755,7 +769,7 @@ function language_negotiation_configure_browser_delete_form($form, &$form_state, '%browser_langcode' => $browser_langcode, )); $path = 'admin/config/regional/language/detection/browser'; - return confirm_form($form, $question, $path, ''); + return confirm_form($form, $question, $path); } /** @@ -768,7 +782,6 @@ function language_negotiation_configure_browser_delete_form_submit($form, &$form unset($mappings[$browser_langcode]); language_set_browser_drupal_langcode_mappings($mappings); } - $form_state['redirect'] = 'admin/config/regional/language/detection/browser'; } /** diff --git a/core/modules/language/language.module b/core/modules/language/language.module index 6b45fa1..87ae484 100644 --- a/core/modules/language/language.module +++ b/core/modules/language/language.module @@ -40,7 +40,7 @@ function language_help($path, $arg) { return $output; case 'admin/config/regional/language/detection/browser': - $output = '

' . t('Browsers use different language codes to refer to the same languages. You can add and edit mappings from browser language codes to the languages used by Drupal.', array('@configure-languages' => url('admin/config/regional/language'))) . '

'; + $output = '

' . t('Browsers use different language codes to refer to the same languages. You can add and edit mappings from browser language codes to the languages used by Drupal, without a custom mapping Drupal will make a best effort to map it.', array('@configure-languages' => url('admin/config/regional/language'))) . '

'; return $output; case 'admin/config/regional/language/detection/selected': diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageBrowserDetectionUnitTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageBrowserDetectionUnitTest.php index 80a835d..6bcf04d 100644 --- a/core/modules/language/lib/Drupal/language/Tests/LanguageBrowserDetectionUnitTest.php +++ b/core/modules/language/lib/Drupal/language/Tests/LanguageBrowserDetectionUnitTest.php @@ -149,8 +149,6 @@ function testLanguageFromBrowser() { 'zh-mo' => 'zh-hant', 'zh-hans' => 'zh-hans', 'zh-hant' => 'zh-hant', - 'zh-chs' => 'zh-hans', - 'zh-cht' => 'zh-hant', ); foreach ($test_cases as $accept_language => $expected_result) {