3 namespace Drupal\user\Plugin\LanguageNegotiation;
5 use Drupal\language\LanguageNegotiationMethodBase;
6 use Symfony\Component\HttpFoundation\Request;
9 * Class for identifying language from the user preferences.
11 * @LanguageNegotiation(
12 * id = \Drupal\user\Plugin\LanguageNegotiation\LanguageNegotiationUser::METHOD_ID,
14 * name = @Translation("User"),
15 * description = @Translation("Follow the user's language preference.")
18 class LanguageNegotiationUser extends LanguageNegotiationMethodBase {
21 * The language negotiation method id.
23 const METHOD_ID = 'language-user';
28 public function getLangcode(Request $request = NULL) {
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;
40 // No language preference from the user.