diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/LanguageFormatter.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/LanguageFormatter.php index 3b43147..95c2164 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/LanguageFormatter.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/LanguageFormatter.php @@ -122,7 +122,12 @@ protected function viewValue(FieldItemInterface $item) { // storage by LanguageManager::getLanguages()) or in its native language // name. That only depends on formatter settings and no language condition. $languages = $this->getSetting('native_language') ? $this->languageManager->getNativeLanguages() : $this->languageManager->getLanguages(); - return $item->language ? SafeMarkup::checkPlain($languages[$item->language->getId()]->getName()) : ''; + // Languages like L + // Values like \Drupal\Core\Language\LanguageInterface::LANGCODE_NOT_SPECIFIED + // and \Drupal\Core\Language\LanguageInterface::LANGCODE_NOT_APPLICABLE are + // not returned from the language manager above. + $name = isset($languages[$item->language->getId()]) ? $languages[$item->language->getId()]->getName() : $item->language->getId(); + return $item->language ? SafeMarkup::checkPlain($name) : ''; } } diff --git a/core/modules/user/src/Tests/Views/UserViewsFieldAccessTest.php b/core/modules/user/src/Tests/Views/UserViewsFieldAccessTest.php index 37f5597..d7b40fc 100644 --- a/core/modules/user/src/Tests/Views/UserViewsFieldAccessTest.php +++ b/core/modules/user/src/Tests/Views/UserViewsFieldAccessTest.php @@ -34,10 +34,6 @@ protected function setUp($import_test_views = TRUE) { public function testUserFields() { ConfigurableLanguage::create([ - 'id' => 'es', - 'name' => 'Spanish', - ])->save(); - ConfigurableLanguage::create([ 'id' => 'fr', 'name' => 'French', ])->save(); diff --git a/core/modules/views/src/Tests/Handler/FieldFieldAccessTestBase.php b/core/modules/views/src/Tests/Handler/FieldFieldAccessTestBase.php index 5554a8a..a0c2bd7 100644 --- a/core/modules/views/src/Tests/Handler/FieldFieldAccessTestBase.php +++ b/core/modules/views/src/Tests/Handler/FieldFieldAccessTestBase.php @@ -7,6 +7,7 @@ namespace Drupal\views\Tests\Handler; +use Drupal\language\Entity\ConfigurableLanguage; use Drupal\user\Entity\Role; use Drupal\user\Entity\User; use Drupal\views\Entity\View; @@ -35,7 +36,7 @@ /** * {@inheritdoc} */ - public static $modules = ['user']; + public static $modules = ['user', 'language']; /** * {@inheritdoc} @@ -43,6 +44,10 @@ protected function setUp($import_test_views = TRUE) { parent::setUp($import_test_views); + // Make the site at least multilingual to have a working language field + // handler. + ConfigurableLanguage::create(['id' => 'es', 'title' => 'Spain title'])->save(); + $this->installEntitySchema('user'); $role_with_access = Role::create([ diff --git a/core/modules/views/tests/src/Unit/EntityViewsDataTest.php b/core/modules/views/tests/src/Unit/EntityViewsDataTest.php index 56d1596..033a500 100644 --- a/core/modules/views/tests/src/Unit/EntityViewsDataTest.php +++ b/core/modules/views/tests/src/Unit/EntityViewsDataTest.php @@ -792,7 +792,7 @@ protected function assertNumericField($data) { * The views data to check. */ protected function assertLanguageField($data) { - $this->assertEquals('field', $data['field']['id']); + $this->assertEquals('field_language', $data['field']['id']); $this->assertEquals('language', $data['filter']['id']); $this->assertEquals('language', $data['argument']['id']); $this->assertEquals('standard', $data['sort']['id']);