diff --git a/core/lib/Drupal/Core/Entity/EntityBCDecorator.php b/core/lib/Drupal/Core/Entity/EntityBCDecorator.php
index b577c18..8f5e521 100644
--- a/core/lib/Drupal/Core/Entity/EntityBCDecorator.php
+++ b/core/lib/Drupal/Core/Entity/EntityBCDecorator.php
@@ -75,8 +75,10 @@ public function &__get($name) {
     // Allow accessing field values in entity default languages other than
     // LANGUAGE_DEFAULT by mapping the values to LANGUAGE_DEFAULT.
     $langcode = $this->decorated->language()->langcode;
-    if ($langcode != LANGUAGE_DEFAULT && isset($this->decorated->values[$name][LANGUAGE_DEFAULT]) && !isset($this->decorated->values[$name][$langcode])) {
-      $this->decorated->values[$name][$langcode] = &$this->decorated->values[$name][LANGUAGE_DEFAULT];
+    if ($langcode != LANGUAGE_DEFAULT && isset($this->decorated->values[$name]) && is_array($this->decorated->values[$name])) {
+      if (isset($this->decorated->values[$name][LANGUAGE_DEFAULT]) && !isset($this->decorated->values[$name][$langcode])) {
+        $this->decorated->values[$name][$langcode] = &$this->decorated->values[$name][LANGUAGE_DEFAULT];
+      }
     }
 
     if (!isset($this->decorated->values[$name])) {
diff --git a/core/modules/translation_entity/lib/Drupal/translation_entity/Tests/EntityTranslationSyncTest.php b/core/modules/translation_entity/lib/Drupal/translation_entity/Tests/EntityTranslationSyncTest.php
index 40602d6..9e8bd2c 100644
--- a/core/modules/translation_entity/lib/Drupal/translation_entity/Tests/EntityTranslationSyncTest.php
+++ b/core/modules/translation_entity/lib/Drupal/translation_entity/Tests/EntityTranslationSyncTest.php
@@ -132,8 +132,7 @@ function testEntitySync() {
       'user_id' => mt_rand(1, 128),
       'langcode' => $default_langcode,
     );
-    $entity = entity_create('entity_test', $values);
-    $entity->setCompatibilityMode(TRUE);
+    $entity = entity_create('entity_test', $values)->getBCEntity();
 
     // Create some file entities from the generated test files and store them.
     $values = array();
@@ -254,8 +253,7 @@ function testEntitySync() {
   protected function saveEntity(EntityInterface $entity) {
     $entity->save();
     $entity = entity_test_load($entity->id(), TRUE);
-    $entity->setCompatibilityMode(TRUE);
-    return $entity;
+    return $entity->getBCEntity();
   }
 
 }
diff --git a/core/modules/translation_entity/translation_entity.module b/core/modules/translation_entity/translation_entity.module
index af1865e..f8ad4bd 100644
--- a/core/modules/translation_entity/translation_entity.module
+++ b/core/modules/translation_entity/translation_entity.module
@@ -672,6 +672,15 @@ function translation_entity_field_attach_presave($entity_type, $entity) {
 /**
  * Performs field column synchronization.
  *
+ * Field column synchronization takes care of propagating any change in the
+ * field items order and in the column values themselves to all the available
+ * translations. This functionality is provided by defining a 'translation_sync'
+ * key in the field instance settings, holding an array of column names to be
+ * synchronized. The synchronized column values are shared across translations,
+ * while the rest varies per-language. This is useful for instance to translate
+ * the "alt" and "title" textual elements of an image field, while keeping the
+ * same image on every translation.
+ *
  * @param \Drupal\Core\Entity\EntityInterface $entity
  *   The entity whose values should be synchronized.
  * @param $sync_langcode
@@ -699,9 +708,7 @@ function translation_entity_sync(EntityInterface $entity, $sync_langcode, $origi
   }
 
   // Enable compatibility mode for NG entities.
-  if (method_exists($entity_unchanged, 'setCompatibilityMode')) {
-    $entity_unchanged->setCompatibilityMode(TRUE);
-  }
+  $entity_unchanged = $entity_unchanged->getBCEntity();
 
   $instances = field_info_instances($entity_type, $entity->bundle());
   foreach ($instances as $field_name => $instance) {
