diff --git a/core/modules/translation_entity/translation_entity.module b/core/modules/translation_entity/translation_entity.module
index 0867c5d..e689fc0 100644
--- a/core/modules/translation_entity/translation_entity.module
+++ b/core/modules/translation_entity/translation_entity.module
@@ -579,13 +579,12 @@ function translation_entity_form_field_ui_field_edit_form_alter(array &$form, ar
   $field_name = $field['field_name'];
   $translatable = $field['translatable'];
 
-  if (!empty($field['settings']['translation_sync'])) {
+  if ($field['translatable'] && !empty($field['settings']['translation_sync'])) {
     $form['instance']['settings']['translation_sync'] = array(
       '#type' => 'checkbox',
       '#title' => t('Synchronize translations'),
       '#description' => t('Check this option if you just wish to translate the textual elements of this field. All the other aspects, such as the order of items or non-textual values, will be the same for all languages.'),
       '#default_value' => !empty($instance['settings']['translation_sync']),
-      '#states' => array('visible' => array(':input[name="field[translatable]"]' => array('checked' => TRUE))),
     );
   }
 
@@ -640,37 +639,43 @@ function translation_entity_field_info_alter(&$info) {
  */
 function translation_entity_field_attach_presave($entity_type, $entity) {
   if (translation_entity_enabled($entity_type, $entity->bundle())) {
-    translation_entity_sync($entity);
+    $attributes = drupal_container()->get('request')->attributes;
+    $source_langcode = $attributes->get('working_langcode');
+    $original_langcode = $attributes->get('source_langcode');
+    translation_entity_sync($entity, $source_langcode, $original_langcode);
   }
 }
 
 /**
  * Performs field column synchronization.
- */
-function translation_entity_sync(EntityInterface $entity) {
-  $entity_type = $entity->entityType();
+ *
+ * @param \Drupal\Core\Entity\EntityInterface $entity
+ *   The entity whose values should be synchronized.
+ * @param $source_langcode
+ *   The language of the translation whose values should be used as source for
+ *   synchronization.
+ * @param $original_langcode
+ *   (optional) If a new translation is being created, this should be the
+ *   language code of the original values. Defaults to FALSE.
+ */
+function translation_entity_sync(EntityInterface $entity, $source_langcode, $original_langcode = FALSE) {
   $translations = $entity->getTranslationLanguages();
-  $controller = translation_entity_controller($entity_type);
-  $attributes = drupal_container()->get('request')->attributes;
-
-  // If we are creating a new entity or if we have no translations for the
-  // current entity, or we haveno contextual information about the translation
-  // being saved, there is nothing to synchronize.
-  $source_langcode = $attributes->get('working_langcode');
-  $original_langcode = $attributes->get('source_langcode');
+
+  // If we are creating a new entity, or if we have no translations for the
+  // current entity, or we have no information about the translation being
+  // saved, then there is nothing to synchronize.
   if (empty($source_langcode) || $entity->isNew() || (count($translations) < 2 && !$original_langcode)) {
     return;
   }
 
-  $instances = field_info_instances($entity_type, $entity->bundle());
-  $entity_unchanged = isset($entity->original) ? $entity->original : entity_load_unchanged($entity_type, $entity->id());
-
   // If the entity language is being changed there is nothing to synchronize.
-  $langcode = $entity->language()->langcode;
-  if ($langcode != $entity_unchanged->language()->langcode) {
+  $entity_type = $entity->entityType();
+  $entity_unchanged = isset($entity->original) ? $entity->original : entity_load_unchanged($entity_type, $entity->id());
+  if ($entity->language()->langcode != $entity_unchanged->language()->langcode) {
     return;
   }
 
+  $instances = field_info_instances($entity_type, $entity->bundle());
   foreach ($instances as $field_name => $instance) {
     $field = field_info_field($field_name);
 
