Drupal - View display plugin "entity reference" not using translation
Comparing TermSelection::getReferenceableEntities and ViewsSelection::getReferenceableEntities it seems like the Views entity reference selection plugin doesn't translate the entity before returning the entity labels. It should work with a core patch adding one line:
/core/modules/views/src/Plugin/EntityReferenceSelection/ViewsSelection.php:
public function getReferenceableEntities($match = NULL, $match_operator = 'CONTAINS', $limit = 0) {
$display_name = $this->getConfiguration()['view']['display_name'];
$arguments = $this->getConfiguration()['view']['arguments'];
$result = [];
if ($this->initializeView($match, $match_operator, $limit)) {
// Get the results.
$result = $this->view->executeDisplay($display_name, $arguments);
}
$return = [];
if ($result) {
foreach ($this->view->result as $row) {
$entity = $row->_entity;
// add this line to translate the entity
$entity = \Drupal::service('entity.repository')->getTranslationFromContext($entity);
$return[$entity->bundle()][$entity->id()] = $entity->label();
}
}
return $return;
}
Edit:
This won't be necessary anymore, when https://www.drupal.org/project/drupal/issues/2174633 is fixed, then resolving the underlying problem, that the selection plugin ignores the views output.