diff --git a/src/Plugin/facets/processor/TranslateEntityProcessor.php b/src/Plugin/facets/processor/TranslateEntityProcessor.php
new file mode 100644
index 0000000..7ab5b3d
--- /dev/null
+++ b/src/Plugin/facets/processor/TranslateEntityProcessor.php
@@ -0,0 +1,65 @@
+<?php
+
+namespace Drupal\facets\Plugin\facets\processor;
+
+use Drupal\Core\Entity\ContentEntityBase;
+use Drupal\Core\Entity\Entity;
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\facets\FacetInterface;
+use Drupal\facets\Plugin\facets\facet_source\SearchApiViews;
+use Drupal\facets\Processor\BuildProcessorInterface;
+use Drupal\facets\Processor\ProcessorPluginBase;
+use Drupal\field\Entity\FieldStorageConfig;
+
+/**
+ * Provides a processor that transforms the results to show the translated entity.
+ *
+ * @FacetsProcessor(
+ *   id = "translate_entity",
+ *   label = @Translation("Translate entity"),
+ *   description = @Translation("Translate entity"),
+ *   stages = {
+ *     "build" = 5
+ *   }
+ * )
+ */
+class TranslateEntityProcessor extends ProcessorPluginBase implements BuildProcessorInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function build(FacetInterface $facet, array $results) {
+    $language_interface = \Drupal::languageManager()->getCurrentLanguage();
+
+    $ids = [];
+    /** @var \Drupal\facets\Result\ResultInterface $result */
+    foreach ($results as &$result) {
+      $ids[] = $result->getRawValue();
+    }
+
+    // Load the indexed entities.
+    $index = $facet->getFacetSource()->getIndex();
+    $field = $index->getField($facet->getFieldIdentifier());
+    $entity_type = str_replace('entity:', '', $field->getDatasourceId());
+    $entities = \Drupal::entityTypeManager()
+      ->getStorage($entity_type)
+      ->loadMultiple($ids);
+
+    for ($i = 0; $i < count($entities); $i++) {
+      /** @var ContentEntityBase $entity */
+      $entity = $entities[$ids[$i]];
+
+      // Check for a translation.
+      if ($entity->hasTranslation($language_interface->getId())) {
+        $entity_trans = $entity->getTranslation($language_interface->getId());
+        $results[$i]->setDisplayValue($entity_trans->label());
+      }
+      else {
+        $results[$i]->setDisplayValue($entity->label());
+      }
+    }
+
+    return $results;
+  }
+
+}
diff --git a/src/Plugin/facets/processor/TranslateNodeProcessor.php b/src/Plugin/facets/processor/TranslateNodeProcessor.php
new file mode 100644
index 0000000..b8006f2
--- /dev/null
+++ b/src/Plugin/facets/processor/TranslateNodeProcessor.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace Drupal\facets\Plugin\facets\processor;
+
+use Drupal\facets\FacetInterface;
+use Drupal\facets\Processor\BuildProcessorInterface;
+use Drupal\facets\Processor\ProcessorPluginBase;
+use Drupal\node\Entity\Node;
+
+/**
+ * @FacetsProcessor(
+ *   id="translate_node",
+ *   label=@Translation("Translate node"),
+ *   description=@Translation("Translate the node"),
+ *   stages={
+ *     "build" = 5
+ *   }
+ * )
+ */
+class TranslateNodeProcessor extends ProcessorPluginBase implements BuildProcessorInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function build(FacetInterface $facet, array $results) {
+    $language_interface = \Drupal::languageManager()->getCurrentLanguage();
+
+    /** @var \Drupal\facets\Result\ResultInterface $result */
+    foreach ($results as $result) {
+      /** @var \Drupal\node\Entity\Node $node */
+      $node = Node::load($result->getRawValue());
+
+      $result->setDisplayValue($node->getTitle());
+      if ($node->hasTranslation($language_interface->getId())) {
+        $node_trans = $node->getTranslation($language_interface->getId());
+        $result->setDisplayValue($node_trans->getTitle());
+      }
+    }
+
+    return $results;
+  }
+
+}
diff --git a/tests/src/Unit/Plugin/processor/TranslateNodeProcessorTest.php b/tests/src/Unit/Plugin/processor/TranslateNodeProcessorTest.php
new file mode 100644
index 0000000..c753093
--- /dev/null
+++ b/tests/src/Unit/Plugin/processor/TranslateNodeProcessorTest.php
@@ -0,0 +1,110 @@
+<?php
+
+namespace Drupal\Tests\facets\Unit\Plugin\processor;
+
+use Drupal\Core\Entity\EntityManagerInterface;
+use Drupal\Core\Entity\EntityStorageInterface;
+use Drupal\Core\Language\Language;
+use Drupal\Core\Language\LanguageManagerInterface;
+use Drupal\facets\Entity\Facet;
+use Drupal\facets\Plugin\facets\processor\TranslateNodeProcessor;
+use Drupal\facets\Result\Result;
+use Drupal\node\Entity\Node;
+use Drupal\Tests\UnitTestCase;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+
+/**
+ * @group facets
+ */
+class TranslateNodeProcessorTest extends UnitTestCase {
+
+  /**
+   * The processor to be tested.
+   *
+   * @var \Drupal\facets\Plugin\facets\processor\TranslateNodeProcessor
+   */
+  protected $processor;
+
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->processor = new TranslateNodeProcessor([], 'translate_node', []);
+
+    $this->createMocks();
+  }
+
+  /**
+   * Tests that results were correctly changed.
+   */
+  public function testResultsChanged() {
+    /** @var \Drupal\facets\Result\ResultInterface[] $original_results */
+    $original_results = [
+      new Result(2, 2, 6),
+    ];
+
+    $facet = new Facet([], 'facet');
+    $facet->setResults($original_results);
+
+    $expected_results = [
+      ['nid' => 2, 'title' => 'shaken not stirred']
+    ];
+
+    foreach ($expected_results as $key => $expected) {
+      $this->assertEquals($expected['nid'], $original_results[$key]->getRawValue());
+      $this->assertEquals($expected['nid'], $original_results[$key]->getDisplayValue());
+    }
+
+    /** @var \Drupal\facets\Result\ResultInterface[] $filtered_results */
+    $filtered_results = $this->processor->build($facet, $original_results);
+
+    foreach ($expected_results as $key => $expected) {
+      $this->assertEquals($expected['nid'], $filtered_results[$key]->getRawValue());
+      $this->assertEquals($expected['title'], $filtered_results[$key]->getDisplayValue());
+    }
+  }
+
+  /**
+   * Creates and sets up the container to be used in tests.
+   */
+  protected function createMocks() {
+    $node = $this->getMockBuilder(Node::class)
+      ->disableOriginalConstructor()
+      ->getMock();
+    $node->expects($this->any())
+      ->method('getTitle')
+      ->willReturn('shaken not stirred');
+
+    $node_storage = $this->getMock(EntityStorageInterface::class);
+    $node_storage->expects($this->any())
+      ->method('load')
+      ->willReturn($node);
+    $entity_manager = $this->getMock(EntityManagerInterface::class);
+    $entity_manager->expects($this->any())
+      ->method('getStorage')
+      ->willReturn($node_storage);
+
+    $language_manager = $this->getMock(LanguageManagerInterface::class);
+    $language = new Language(['langcode' => 'en']);
+    $language_manager->expects($this->any())
+      ->method('getCurrentLanguage')
+      ->will($this->returnValue($language));
+
+    $container = new ContainerBuilder();
+    $container->set('entity.manager', $entity_manager);
+    $container->set('language_manager', $language_manager);
+    \Drupal::setContainer($container);
+  }
+
+  /**
+   * Tests configuration.
+   */
+  public function testConfiguration() {
+    $config = $this->processor->defaultConfiguration();
+    $this->assertEquals([], $config);
+  }
+
+}
