diff --git a/core/lib/Drupal/Core/Session/AccountInterface.php b/core/lib/Drupal/Core/Session/AccountInterface.php index ed94bf3..911c8e2 100644 --- a/core/lib/Drupal/Core/Session/AccountInterface.php +++ b/core/lib/Drupal/Core/Session/AccountInterface.php @@ -74,18 +74,28 @@ public function isAnonymous(); /** * Returns the preferred language code of the account. * - * @param $type - * Optional string to define which preferred langcode should be used. - * Default to 'preferred_langcode' property. - * If set 'preferred_$type_langcode' is used. - * @param $default + * @param string $default * Optional default language code to return if the account * has no valid language. * * @return string * The language code that is preferred by the account. */ - public function getPreferredLangcode($type = NULL, $default = NULL); + public function getPreferredLangcode($default = NULL); + + /** + * Returns the preferred administrative language code of the account. + * + * Defines which language is used on administrative pages. + * + * @param string $default + * Optional default language code to return if the account + * has no valid administrative language. + * + * @return string + * The language code that is preferred by the account. + */ + public function getPreferredAdminLangcode($default = NULL); /** * Returns the user name. diff --git a/core/lib/Drupal/Core/Session/UserSession.php b/core/lib/Drupal/Core/Session/UserSession.php index abda3f4..a33fbaa 100644 --- a/core/lib/Drupal/Core/Session/UserSession.php +++ b/core/lib/Drupal/Core/Session/UserSession.php @@ -80,7 +80,7 @@ class UserSession implements AccountInterface { protected $preferred_langcode; /** - * The preferred language code of the account. + * The preferred administrative language code of the account. * * @var string */ @@ -150,16 +150,23 @@ public function isAnonymous() { /** * {@inheritdoc} */ - function getPreferredLangcode($type = NULL, $default = NULL) { + function getPreferredLangcode($default = NULL) { $language_list = language_list(); - if (isset($type)) { - $preferred_langcode = $this->{'preferred_' . $type . '_langcode'}; + if (!empty($this->preferred_langcode) && isset($language_list[$this->preferred_langcode])) { + return $language_list[$this->preferred_langcode]->langcode; } else { - $preferred_langcode = $this->preferred_langcode; + return $default ? $default : language_default()->langcode; } - if (!empty($preferred_langcode) && isset($language_list[$preferred_langcode])) { - return $language_list[$preferred_langcode]->langcode; + } + + /** + * {@inheritdoc} + */ + function getPreferredAdminLangcode($default = NULL) { + $language_list = language_list(); + if (!empty($this->preferred_admin_langcode) && isset($language_list[$this->preferred_admin_langcode])) { + return $language_list[$this->preferred_admin_langcode]->langcode; } else { return $default ? $default : language_default()->langcode; diff --git a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php b/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php index 77cabc9..da06868 100644 --- a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php +++ b/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php @@ -338,14 +338,23 @@ public function getTimeZone() { /** * {@inheritdoc} */ - function getPreferredLangcode($type = NULL, $default = NULL) { + function getPreferredLangcode($default = NULL) { $language_list = language_list(); - if (isset($type)) { - $preferred_langcode = $this->get('preferred_' . $type . '_langcode')->value; + $preferred_langcode = $this->get('preferred_langcode')->value; + if (!empty($preferred_langcode) && isset($language_list[$preferred_langcode])) { + return $language_list[$preferred_langcode]->langcode; } else { - $preferred_langcode = $this->get('preferred_langcode')->value; + return $default ? $default : language_default()->langcode; } + } + + /** + * {@inheritdoc} + */ + function getPreferredAdminLangcode($default = NULL) { + $language_list = language_list(); + $preferred_langcode = $this->get('preferred_admin_langcode')->value; if (!empty($preferred_langcode) && isset($language_list[$preferred_langcode])) { return $language_list[$preferred_langcode]->langcode; } diff --git a/core/modules/user/lib/Drupal/user/UserInterface.php b/core/modules/user/lib/Drupal/user/UserInterface.php index 59a13a8..16fc704 100644 --- a/core/modules/user/lib/Drupal/user/UserInterface.php +++ b/core/modules/user/lib/Drupal/user/UserInterface.php @@ -113,7 +113,6 @@ public function getSignatureFormat(); * * @return int * Timestamp of the creation date. - * */ public function getCreatedTime(); @@ -186,22 +185,6 @@ public function block(); public function getTimeZone(); /** - * Returns the preferred language code of the user. - * - * @param $type - * Optional string to define which preferred langcode should be used. - * Default to 'preferred_langcode' property. - * If set 'preferred_$type_langcode' is used. - * @param $default - * Optional default language code to return if the account - * has no valid language. - * - * @return string - * The language code that is preferred by the user. - */ - public function getPreferredLangcode($type = NULL, $default = NULL); - - /** * Returns the e-mail that was used when the user was registered. * * @return string