diff --git a/core/modules/taxonomy/src/TermBreadcrumbBuilder.php b/core/modules/taxonomy/src/TermBreadcrumbBuilder.php
index c2e47a1..c991264 100644
--- a/core/modules/taxonomy/src/TermBreadcrumbBuilder.php
+++ b/core/modules/taxonomy/src/TermBreadcrumbBuilder.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\taxonomy;
 
+use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Link;
@@ -48,23 +49,36 @@ public function __construct(EntityManagerInterface $entityManager) {
    * {@inheritdoc}
    */
   public function applies(RouteMatchInterface $route_match) {
-    return $route_match->getRouteName() == 'entity.taxonomy_term.canonical'
-      && $route_match->getParameter('taxonomy_term') instanceof TermInterface;
+    return in_array($route_match->getRouteName(), array(
+      'entity.taxonomy_term.canonical',
+      'entity.taxonomy_term.edit_form',
+      'entity.taxonomy_term.delete_form',
+      )) && $route_match->getParameter('taxonomy_term') instanceof TermInterface;
   }
 
   /**
    * {@inheritdoc}
    */
   public function build(RouteMatchInterface $route_match) {
+    /** @var \Drupal\taxonomy\TermInterface $term */
     $term = $route_match->getParameter('taxonomy_term');
     // @todo This overrides any other possible breadcrumb and is a pure
     //   hard-coded presumption. Make this behavior configurable per
     //   vocabulary or term.
     $breadcrumb = array();
-    while ($parents = $this->termStorage->loadParents($term->id())) {
-      $term = array_shift($parents);
+    if (in_array($route_match->getRouteName(), array(
+          'entity.taxonomy_term.edit_form',
+          'entity.taxonomy_term.delete_form',
+        ))) {
       $term = $this->entityManager->getTranslationFromContext($term);
-      $breadcrumb[] = Link::createFromRoute($term->getName(), 'entity.taxonomy_term.canonical', array('taxonomy_term' => $term->id()));
+      $breadcrumb[] = Link::createFromRoute(SafeMarkup::checkPlain($term->getName()), 'entity.taxonomy_term.canonical', array('taxonomy_term' => $term->id()));
+    }
+    else {
+      while ($parents = $this->termStorage->loadParents($term->id())) {
+        $term = array_shift($parents);
+        $term = $this->entityManager->getTranslationFromContext($term);
+        $breadcrumb[] = Link::createFromRoute(SafeMarkup::checkPlain($term->getName()), $route_match->getRouteName(), array('taxonomy_term' => $term->id()));
+      }
     }
     $breadcrumb[] = Link::createFromRoute($this->t('Home'), '<front>');
     $breadcrumb = array_reverse($breadcrumb);
diff --git a/core/modules/taxonomy/src/Tests/TermTest.php b/core/modules/taxonomy/src/Tests/TermTest.php
index 09a0de2..fb3f203 100644
--- a/core/modules/taxonomy/src/Tests/TermTest.php
+++ b/core/modules/taxonomy/src/Tests/TermTest.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\taxonomy\Tests;
 
+use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Component\Utility\Tags;
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
@@ -28,6 +29,8 @@ class TermTest extends TaxonomyTestBase {
    */
   protected $vocabulary;
 
+  public static $modules = array('views', 'views_ui');
+
   /**
    * Taxonomy term reference field for testing.
    *
@@ -302,6 +305,7 @@ function testTermInterface() {
     $this->drupalPostForm('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/add', $edit, t('Save'));
 
     $terms = taxonomy_term_load_multiple_by_name($edit['name[0][value]']);
+    /** @var \Drupal\taxonomy\TermInterface $term */
     $term = reset($terms);
     $this->assertNotNull($term, 'Term found in database.');
 
@@ -313,6 +317,12 @@ function testTermInterface() {
     // the first edit link found on the listing page is to our term.
     $this->clickLink(t('Edit'), 1);
 
+    // Check the breadcrumbs of the page.
+    $breadcrumbs = $this->cssSelect('nav.breadcrumb ol li a');
+    $this->assertIdentical(count($breadcrumbs), 2, 'The breadcrumbs are present on the page.');
+    $this->assertIdentical((string) $breadcrumbs[0], t('Home'), 'First breadcrumb text is Home');
+    $this->assertIdentical((string) $breadcrumbs[1], SafeMarkup::checkPlain($term->label()), 'Second breadcrumb text is term name');
+
     $this->assertRaw($edit['name[0][value]'], 'The randomly generated term name is present.');
     $this->assertText($edit['description[0][value]'], 'The randomly generated term description is present.');
 
@@ -358,6 +368,13 @@ function testTermInterface() {
     // Delete the term.
     $this->drupalGet('taxonomy/term/' . $term->id() . '/edit');
     $this->clickLink(t('Delete'));
+
+    // Check the breadcrumbs of the page.
+    $breadcrumbs = $this->cssSelect('nav.breadcrumb ol li a');
+    $this->assertIdentical(count($breadcrumbs), 2, 'The breadcrumbs are present on the page.');
+    $this->assertIdentical((string) $breadcrumbs[0], t('Home'), 'First breadcrumb text is Home');
+    $this->assertIdentical((string) $breadcrumbs[1], SafeMarkup::checkPlain($term->label()), 'Second breadcrumb text is term name');
+
     $this->drupalPostForm(NULL, NULL, t('Delete'));
 
     // Assert that the term no longer exists.
