diff --git a/core/lib/Drupal/Core/Entity/ContentEntityBase.php b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
index 7c0a458..00e6b3c 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityBase.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
@@ -1184,7 +1184,7 @@ public static function bundleFieldDefinitions(EntityTypeInterface $entity_type,
   /**
    * {@inheritdoc}
    */
-  public function hasTranslationChanges() {
+  public function hasTranslationChanges($check_untranslatable_fields = FALSE) {
     if ($this->isNew()) {
       return TRUE;
     }
@@ -1220,7 +1220,7 @@ public function hasTranslationChanges() {
       if ($field_name == 'revision_translation_affected' || $field_name == 'revision_id') {
         continue;
       }
-      if (!$definition->isComputed() && (!$translated || $definition->isTranslatable())) {
+      if (!$definition->isComputed() && (!$translated || $check_untranslatable_fields || $definition->isTranslatable())) {
         $items = $this->get($field_name)->filterEmptyItems();
         $original_items = $translation->get($field_name)->filterEmptyItems();
         if (!$items->equals($original_items)) {
diff --git a/core/lib/Drupal/Core/Entity/ContentEntityInterface.php b/core/lib/Drupal/Core/Entity/ContentEntityInterface.php
index 0c3f04b..559d312 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityInterface.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityInterface.php
@@ -26,12 +26,16 @@
    * Determines if the current translation of the entity has unsaved changes.
    *
    * If the entity is translatable only translatable fields will be checked for
-   * changes.
+   * changes, unless $check_untranslatable_fields is set to TRUE.
+   *
+   * @param bool $check_untranslatable_fields
+   *   (optional) Whether or not untranslatable fields should be checked for
+   *   changes.
    *
    * @return bool
    *   TRUE if the current translation of the entity has changes.
    */
-  public function hasTranslationChanges();
+  public function hasTranslationChanges($check_untranslatable_fields = FALSE);
 
   /**
    * Marks the current revision translation as affected.
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/ChangedItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/ChangedItem.php
index 9f2096f..d43244c 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/ChangedItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/ChangedItem.php
@@ -46,7 +46,7 @@ public function preSave() {
       $langcode = $entity->language()->getId();
       if (!$entity->isNew() && $original->hasTranslation($langcode)) {
         $original_value = $original->getTranslation($langcode)->get($this->getFieldDefinition()->getName())->value;
-        if ($this->value == $original_value && $entity->hasTranslationChanges()) {
+        if ($this->value == $original_value && $entity->hasTranslationChanges(TRUE)) {
           $this->value = REQUEST_TIME;
         }
       }
diff --git a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestMulChanged.php b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestMulChanged.php
index 5fbc408..dd3da09 100644
--- a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestMulChanged.php
+++ b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestMulChanged.php
@@ -60,6 +60,10 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
       ->setDescription(t('The time that the entity was last edited.'))
       ->setTranslatable(TRUE);
 
+    $fields['not_translatable'] = BaseFieldDefinition::create('string')
+      ->setLabel(t('Non translatable'))
+      ->setDescription(t('A non-translatable string field'));
+
     return $fields;
   }
 
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/ContentEntityChangedTest.php b/core/tests/Drupal/KernelTests/Core/Entity/ContentEntityChangedTest.php
index 51a204f..cc2ea8b 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/ContentEntityChangedTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/ContentEntityChangedTest.php
@@ -61,6 +61,7 @@ public function testChanged() {
     // Create a test entity.
     $entity = EntityTestMulChanged::create(array(
       'name' => $this->randomString(),
+      'not_translatable' => $this->randomString(),
       'user_id' => $user1->id(),
       'language' => 'en',
     ));
@@ -122,6 +123,23 @@ public function testChanged() {
       'Changed time of the German translation did not change.'
     );
 
+    // Update a non-translatable field to make sure that the changed timestamp
+    // is updated for all translations.
+    $entity->set('not_translatable', $this->randomString())->save();
+
+    $this->assertTrue(
+      $entity->getChangedTime() > $changed_en,
+      'Changed time of original language did change.'
+    );
+
+    $this->assertTrue(
+      $german->getChangedTime() > $changed_de,
+      'Changed time of the German translation did change.'
+    );
+
+    $changed_en = $entity->getChangedTime();
+    $changed_de = $german->getChangedTime();
+
     $entity->setOwner($user2);
 
     $entity->save();
