diff --git a/core/lib/Drupal/Core/StringTranslation/TranslationManager.php b/core/lib/Drupal/Core/StringTranslation/TranslationManager.php
index cdfc2df..3e07d28 100644
--- a/core/lib/Drupal/Core/StringTranslation/TranslationManager.php
+++ b/core/lib/Drupal/Core/StringTranslation/TranslationManager.php
@@ -164,9 +164,17 @@ public function formatPlural($count, $singular, $plural, array $args = array(),
       return SafeMarkup::set($translated_array[0]);
     }
 
-    // Get the plural index through the gettext formula.
-    // @todo implement static variable to minimize function_exists() usage.
-    $index = (function_exists('locale_get_plural')) ? locale_get_plural($count, isset($options['langcode']) ? $options['langcode'] : NULL) : -1;
+    if (FALSE === $this->getStringTranslation(empty($options['langcode']) ? $this->defaultLangcode : $options['langcode'], $translatable_string, empty($options['context']) ? '' : $options['context'])) {
+      // Use the base index if the string is not translated. This will
+      // avoid showing one language's string with another language's
+      // index.
+      $index = -1;
+    }
+    else {
+      // Get the plural index through the gettext formula.
+      // @todo implement static variable to minimize function_exists() usage.
+      $index = (function_exists('locale_get_plural')) ? locale_get_plural($count, isset($options['langcode']) ? $options['langcode'] : NULL) : -1;
+    }
     if ($index == 0) {
       // Singular form.
       $return = $translated_array[0];
