diff --git a/core/lib/Drupal/Core/Cache/RuntimeCacheableDependencyInterface.php b/core/lib/Drupal/Core/Cache/RuntimeCacheableDependencyInterface.php
new file mode 100644
index 0000000..6be18d6
--- /dev/null
+++ b/core/lib/Drupal/Core/Cache/RuntimeCacheableDependencyInterface.php
@@ -0,0 +1,13 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\Core\Cache\RuntimeCacheableDependencyInterface.
+ */
+
+namespace Drupal\Core\Cache;
+
+interface RuntimeCacheableDependencyInterface {
+
+  public function addRuntimeCacheContexts(array $cache_contexts);
+
+}
diff --git a/core/lib/Drupal/Core/Entity/Entity.php b/core/lib/Drupal/Core/Entity/Entity.php
index 9ffa497..777d15c 100644
--- a/core/lib/Drupal/Core/Entity/Entity.php
+++ b/core/lib/Drupal/Core/Entity/Entity.php
@@ -50,6 +50,13 @@
   protected $typedData;
 
   /**
+   * Runtime cache contexts.
+   *
+   * @var array
+   */
+  protected $runtimeCacheContexts = [];
+
+  /**
    * Constructs an Entity object.
    *
    * @param array $values
@@ -440,7 +447,7 @@ public function referencedEntities() {
    * {@inheritdoc}
    */
   public function getCacheContexts() {
-    return [];
+    return $this->runtimeCacheContexts;
   }
 
   /**
@@ -608,4 +615,10 @@ public function getConfigTarget() {
     return $this->uuid();
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function addRuntimeCacheContexts(array $cache_contexts) {
+    $this->runtimeCacheContexts = Cache::mergeContexts($this->runtimeCacheContexts, $cache_contexts);
+  }
 }
diff --git a/core/lib/Drupal/Core/Entity/EntityInterface.php b/core/lib/Drupal/Core/Entity/EntityInterface.php
index 68dafd0..49c25a2 100644
--- a/core/lib/Drupal/Core/Entity/EntityInterface.php
+++ b/core/lib/Drupal/Core/Entity/EntityInterface.php
@@ -9,13 +9,14 @@
 
 use Drupal\Core\Access\AccessibleInterface;
 use Drupal\Core\Cache\CacheableDependencyInterface;
+use Drupal\Core\Cache\RuntimeCacheableDependencyInterface;
 
 /**
  * Defines a common interface for all entity objects.
  *
  * @ingroup entity_api
  */
-interface EntityInterface extends AccessibleInterface, CacheableDependencyInterface {
+interface EntityInterface extends AccessibleInterface, CacheableDependencyInterface, RuntimeCacheableDependencyInterface {
 
   /**
    * Gets the entity UUID (Universally Unique Identifier).
diff --git a/core/lib/Drupal/Core/Entity/EntityManager.php b/core/lib/Drupal/Core/Entity/EntityManager.php
index 1e1323e..dd76354 100644
--- a/core/lib/Drupal/Core/Entity/EntityManager.php
+++ b/core/lib/Drupal/Core/Entity/EntityManager.php
@@ -969,6 +969,7 @@ public function getTranslationFromContext(EntityInterface $entity, $langcode = N
     if ($entity instanceof TranslatableInterface && count($entity->getTranslationLanguages()) > 1) {
       if (empty($langcode)) {
         $langcode = $this->languageManager->getCurrentLanguage(LanguageInterface::TYPE_CONTENT)->getId();
+        $entity->addRuntimeCacheContexts(['languages:' . LanguageInterface::TYPE_CONTENT]);
       }
 
       // Retrieve language fallback candidates to perform the entity language
diff --git a/core/lib/Drupal/Core/Entity/EntityViewBuilder.php b/core/lib/Drupal/Core/Entity/EntityViewBuilder.php
index 09736d2..d63f881 100644
--- a/core/lib/Drupal/Core/Entity/EntityViewBuilder.php
+++ b/core/lib/Drupal/Core/Entity/EntityViewBuilder.php
@@ -119,6 +119,9 @@ public function view(EntityInterface $entity, $view_mode = 'full', $langcode = N
   public function viewMultiple(array $entities = array(), $view_mode = 'full', $langcode = NULL) {
     if (!isset($langcode)) {
       $langcode = $this->languageManager->getCurrentLanguage(LanguageInterface::TYPE_CONTENT)->getId();
+      foreach ($entities as $entity) {
+        $entity->addRuntimeCacheContexts(['languages:' . LanguageInterface::TYPE_CONTENT]);
+      }
     }
 
     $build_list = array(
diff --git a/core/modules/views_ui/src/ViewUI.php b/core/modules/views_ui/src/ViewUI.php
index 05451be..b738d94 100644
--- a/core/modules/views_ui/src/ViewUI.php
+++ b/core/modules/views_ui/src/ViewUI.php
@@ -1336,4 +1336,11 @@ public function hasTrustedData() {
     return $this->storage->hasTrustedData();
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function addRuntimeCacheContexts(array $cache_contexts) {
+    $this->storage->addRuntimeCacheContexts($cache_contexts);
+  }
+
 }
