diff --git a/core/modules/book/src/BookBreadcrumbBuilder.php b/core/modules/book/src/BookBreadcrumbBuilder.php
index ed39a53..7c5e51e 100644
--- a/core/modules/book/src/BookBreadcrumbBuilder.php
+++ b/core/modules/book/src/BookBreadcrumbBuilder.php
@@ -68,11 +68,17 @@ public function build(RouteMatchInterface $route_match) {
       $depth++;
     }
     $parent_books = $this->nodeStorage->loadMultiple($book_nids);
+    $langcode = \Drupal::languageManager()->getCurrentLanguage()->getId();
     if (count($parent_books) > 0) {
       $depth = 1;
       while (!empty($book['p' . ($depth + 1)])) {
         if (!empty($parent_books[$book['p' . $depth]]) && ($parent_book = $parent_books[$book['p' . $depth]])) {
           $access = $parent_book->access('view', $this->account, TRUE);
+          if ($parent_book->isTranslatable()) {
+            if ($parent_book->hasTranslation($langcode)) {
+              $parent_book = $parent_book->getTranslation($langcode);
+            }
+          }
           $breadcrumb->addCacheableDependency($access);
           if ($access->isAllowed()) {
             $breadcrumb->addCacheableDependency($parent_book);
diff --git a/core/modules/book/src/BookManager.php b/core/modules/book/src/BookManager.php
index 60754be..ca1e0ef 100644
--- a/core/modules/book/src/BookManager.php
+++ b/core/modules/book/src/BookManager.php
@@ -532,6 +532,7 @@ public function bookTreeOutput(array $tree) {
    */
   protected function buildItems(array $tree) {
     $items = [];
+    $langcode = \Drupal::languageManager()->getCurrentLanguage()->getId();
 
     foreach ($tree as $data) {
       $element = [];
@@ -563,6 +564,11 @@ protected function buildItems(array $tree) {
       $element['attributes'] = new Attribute();
       $element['title'] = $data['link']['title'];
       $node = $this->entityManager->getStorage('node')->load($data['link']['nid']);
+      if ($node->isTranslatable()) {
+         if ($node->hasTranslation($langcode)) {
+            $node = $node->getTranslation($langcode);
+         }
+      }
       $element['url'] = $node->urlInfo();
       $element['localized_options'] = !empty($data['link']['localized_options']) ? $data['link']['localized_options'] : [];
       $element['localized_options']['set_active_class'] = TRUE;
@@ -991,6 +997,12 @@ public function bookLinkTranslate(&$link) {
         $node = $this->entityManager->getStorage('node')
           ->load($link['nid']);
       }
+      if ($node->isTranslatable()) {
+        $langcode = \Drupal::languageManager()->getCurrentLanguage()->getId();
+        if ($node->hasTranslation($langcode)) {
+          $node = $node->getTranslation($langcode);
+        }
+      }
       // The node label will be the value for the current user's language.
       $link['title'] = $node->label();
       $link['options'] = array();
