0e8108a9c8d3ee54efc02a9939aa3bed4a3afc50
[yaffs-website] / web / core / modules / user / src / Plugin / LanguageNegotiation / LanguageNegotiationUser.php
1 <?php
2
3 namespace Drupal\user\Plugin\LanguageNegotiation;
4
5 use Drupal\language\LanguageNegotiationMethodBase;
6 use Symfony\Component\HttpFoundation\Request;
7
8 /**
9  * Class for identifying language from the user preferences.
10  *
11  * @LanguageNegotiation(
12  *   id = \Drupal\user\Plugin\LanguageNegotiation\LanguageNegotiationUser::METHOD_ID,
13  *   weight = -4,
14  *   name = @Translation("User"),
15  *   description = @Translation("Follow the user's language preference.")
16  * )
17  */
18 class LanguageNegotiationUser extends LanguageNegotiationMethodBase {
19
20   /**
21    * The language negotiation method id.
22    */
23   const METHOD_ID = 'language-user';
24
25   /**
26    * {@inheritdoc}
27    */
28   public function getLangcode(Request $request = NULL) {
29     $langcode = NULL;
30
31     // User preference (only for authenticated users).
32     if ($this->languageManager && $this->currentUser->isAuthenticated()) {
33       $preferred_langcode = $this->currentUser->getPreferredLangcode(FALSE);
34       $languages = $this->languageManager->getLanguages();
35       if (!empty($preferred_langcode) && isset($languages[$preferred_langcode])) {
36         $langcode = $preferred_langcode;
37       }
38     }
39
40     // No language preference from the user.
41     return $langcode;
42   }
43
44 }