diff --git a/core/modules/file/src/Plugin/Field/FieldType/FileFieldItemList.php b/core/modules/file/src/Plugin/Field/FieldType/FileFieldItemList.php
index c7cf0f0..0135c87 100644
--- a/core/modules/file/src/Plugin/Field/FieldType/FileFieldItemList.php
+++ b/core/modules/file/src/Plugin/Field/FieldType/FileFieldItemList.php
@@ -83,7 +83,15 @@ public function delete() {
 
     // If a translation is deleted only decrement the file usage by one. If the
     // default translation is deleted remove all file usages within this entity.
-    $count = $entity->isDefaultTranslation() ? 0 : 1;
+    // When checking the default translation we have to ensure we're not in the
+    // situation where the default translation has changed it's language.
+    // Since this will trigger the delete callback on the field (the field has
+    // previously been added in the new value). Without deleting the actual
+    // translation. 
+    $isDefault = $entity->isDefaultTranslation();
+    $isDeleted = $entity->getTranslationStatus($entity->language()->getId()) == $entity::TRANSLATION_REMOVED;
+    $count = $isDefault && $isDeleted ? 0 : 1;
+
     foreach ($this->referencedEntities() as $file) {
       \Drupal::service('file.usage')->delete($file, 'file', $entity->getEntityTypeId(), $entity->id(), $count);
     }
diff --git a/core/modules/file/src/Tests/FileOnTranslatedEntityTest.php b/core/modules/file/src/Tests/FileOnTranslatedEntityTest.php
index b8a22ae..2e57070 100644
--- a/core/modules/file/src/Tests/FileOnTranslatedEntityTest.php
+++ b/core/modules/file/src/Tests/FileOnTranslatedEntityTest.php
@@ -202,4 +202,37 @@ public function testSyncedFiles() {
     $this->assertTrue($file->isTemporary());
   }
 
+  /**
+   * Tests if file field tracks file usages correctly on translated nodes.
+   */
+  public function testFileUsage() {
+    /** @var \Drupal\file\FileUsage\FileUsageInterface $file_usage */
+    $file_usage = \Drupal::service('file.usage');
+
+    // Enable language selector on the basic page edit form.
+    $edit = [
+      'language_configuration[language_alterable]' => 1,
+    ];
+    $this->drupalPostForm('admin/structure/types/manage/page', $edit, t('Save content type'));
+
+    // Create a node and upload a file.
+    $node = $this->drupalCreateNode(['type' => 'page']);
+    $edit = [
+      'files[' . $this->fieldName . '_0]' => drupal_realpath($this->drupalGetTestFiles('text')[0]->uri),
+    ];
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
+
+    // Check if the file usage is correct.
+    $file = file_load($this->getLastFileId());
+    $this->assertEqual($file_usage->listUsage($file), ['file' => ['node' => [$node->id() => '1']]]);
+
+    // Check if the file usage is tracked correctly when changing the original
+    // language of an entity.
+    $edit = [
+      'langcode[0][value]' => 'fr',
+    ];
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
+    $this->assertEqual($file_usage->listUsage($file), ['file' => ['node' => [$node->id() => '1']]]);
+  }
+
 }
