diff --git a/core/modules/user/lib/Drupal/user/AccountFormController.php b/core/modules/user/lib/Drupal/user/AccountFormController.php index 082b15c..fb0aacd 100644 --- a/core/modules/user/lib/Drupal/user/AccountFormController.php +++ b/core/modules/user/lib/Drupal/user/AccountFormController.php @@ -7,6 +7,7 @@ namespace Drupal\user; +use Drupal; use Drupal\Core\Entity\EntityFormController; use Drupal\Core\Language\Language; @@ -199,13 +200,24 @@ public function form(array $form, array &$form_state) { '#description' => $interface_language_is_default ? t("This account's preferred language for e-mails and site presentation.") : t("This account's preferred language for e-mails."), ); - $form['language']['preferred_admin_langcode'] = array( - '#type' => 'language_select', - '#title' => t('Administration pages language'), - '#languages' => Language::STATE_CONFIGURABLE, - '#default_value' => $user_preferred_admin_langcode, - '#access' => user_access('access administration pages', $account), - ); + // Only show the account setting for Administration pages language to users + // if one of the detection and selection methods uses it. + if (Drupal::moduleHandler()->moduleExists('language')) { + $show_admin_language = FALSE; + foreach (language_types_info() as $type_key => $language_type) { + $negotiation_settings = variable_get("language_negotiation_{$type_key}", array()); + if ($show_admin_language = isset($negotiation_settings[LANGUAGE_NEGOTIATION_USER_ADMIN])) { + break; + } + } + $form['language']['preferred_admin_langcode'] = array( + '#type' => 'language_select', + '#title' => t('Administration pages language'), + '#languages' => Language::STATE_CONFIGURABLE, + '#default_value' => $user_preferred_admin_langcode, + '#access' => $show_admin_language && user_access('access administration pages', $account), + ); + } // User entities contain both a langcode property (for identifying the // language of the entity data) and a preferred_langcode property (see