diff --git a/core/modules/content_translation/src/Access/ContentTranslationManageAccessCheck.php b/core/modules/content_translation/src/Access/ContentTranslationManageAccessCheck.php
index 54c61fc..b84ce82 100644
--- a/core/modules/content_translation/src/Access/ContentTranslationManageAccessCheck.php
+++ b/core/modules/content_translation/src/Access/ContentTranslationManageAccessCheck.php
@@ -98,6 +98,9 @@ public function access(Route $route, RouteMatchInterface $route_match, AccountIn
       /* @var \Drupal\content_translation\ContentTranslationHandlerInterface $handler */
       $handler = $this->entityManager->getHandler($entity->getEntityTypeId(), 'translation');
 
+      // Reload unchanged entity to get stored translation only.
+      $entity = $this->entityManager->getStorage($entity->getEntityTypeId())->loadUnchanged($entity->id());
+
       // Load translation.
       $translations = $entity->getTranslationLanguages();
       $languages = $this->languageManager->getLanguages();
diff --git a/core/modules/content_translation/src/Routing/ContentTranslationRouteSubscriber.php b/core/modules/content_translation/src/Routing/ContentTranslationRouteSubscriber.php
index ebdf562..a30c191 100644
--- a/core/modules/content_translation/src/Routing/ContentTranslationRouteSubscriber.php
+++ b/core/modules/content_translation/src/Routing/ContentTranslationRouteSubscriber.php
@@ -87,8 +87,6 @@ protected function alterRoutes(RouteCollection $collection) {
         $path . '/add/{source}/{target}',
         array(
           '_controller' => '\Drupal\content_translation\Controller\ContentTranslationController::add',
-          'source' => NULL,
-          'target' => NULL,
           '_title' => 'Add',
           'entity_type_id' => $entity_type_id,
 
@@ -118,7 +116,6 @@ protected function alterRoutes(RouteCollection $collection) {
         $path . '/edit/{language}',
         array(
           '_controller' => '\Drupal\content_translation\Controller\ContentTranslationController::edit',
-          'language' => NULL,
           '_title' => 'Edit',
           'entity_type_id' => $entity_type_id,
         ),
@@ -143,7 +140,6 @@ protected function alterRoutes(RouteCollection $collection) {
         $path . '/delete/{language}',
         array(
           '_entity_form' => $entity_type_id . '.content_translation_deletion',
-          'language' => NULL,
           '_title' => 'Delete',
           'entity_type_id' => $entity_type_id,
         ),
diff --git a/core/modules/content_translation/src/Tests/ContentTranslationUITestBase.php b/core/modules/content_translation/src/Tests/ContentTranslationUITestBase.php
index 1b79d13..f26f31f 100644
--- a/core/modules/content_translation/src/Tests/ContentTranslationUITestBase.php
+++ b/core/modules/content_translation/src/Tests/ContentTranslationUITestBase.php
@@ -113,6 +113,21 @@ protected function doTestBasicTranslation() {
       'source' => $default_langcode,
       'target' => $langcode
     ], array('language' => $language));
+
+    // Ensure that there are not 'Add' breadcrumbs.
+    $url_string = $add_url->toString();
+    $this->drupalGet($url_string);
+    $links = $this->xpath('//nav[@class="breadcrumb"]/ol/li/a[text()="Add"]');
+    $this->assert(empty($links), 'No "Add" breadcrumbs.');
+
+    // Ensure that removing the last two url parts does not yield a fatal error.
+    $url_parts = explode('/', $url_string);
+    for ($i = 0; $i < 2; $i++) {
+      array_pop($url_parts);
+      $this->drupalGet(implode('/', $url_parts));
+      $this->assertResponse(404);
+    }
+
     $this->drupalPostForm($add_url, $this->getEditValues($values, $langcode), $this->getFormSubmitActionForNewTranslation($entity, $langcode));
 
     // Assert that HTML is escaped in "all languages" in UI after SafeMarkup
diff --git a/core/modules/node/src/Controller/NodeViewController.php b/core/modules/node/src/Controller/NodeViewController.php
index ee84e6b..d6e6cdd 100644
--- a/core/modules/node/src/Controller/NodeViewController.php
+++ b/core/modules/node/src/Controller/NodeViewController.php
@@ -22,6 +22,11 @@ public function view(EntityInterface $node, $view_mode = 'full', $langcode = NUL
     $build = parent::view($node, $view_mode, $langcode);
 
     foreach ($node->uriRelationships() as $rel) {
+      // Whitelist links to remove content translation links.
+      if (!in_array($rel, ['canonical', 'delete-form', 'edit-form', 'version-history', 'revision'], TRUE)) {
+        continue;
+      }
+
       // Set the node path as the canonical URL to prevent duplicate content.
       $build['#attached']['html_head_link'][] = array(
         array(
