diff --git a/sources/content/config/install/tmgmt_content.settings.yml b/sources/content/config/install/tmgmt_content.settings.yml
new file mode 100644
index 0000000..17963e5
--- /dev/null
+++ b/sources/content/config/install/tmgmt_content.settings.yml
@@ -0,0 +1 @@
+embedded_fields: { }
\ No newline at end of file
diff --git a/sources/content/config/schema/tmgmt_content.schema.yml b/sources/content/config/schema/tmgmt_content.schema.yml
new file mode 100644
index 0000000..4ba82c5
--- /dev/null
+++ b/sources/content/config/schema/tmgmt_content.schema.yml
@@ -0,0 +1,10 @@
+tmgmt_content.settings:
+  type: mapping
+  mapping:
+    embedded_fields:
+      label: 'Embedded fields'
+      type: sequence
+      sequence:
+        type: sequence
+        sequence:
+          type: boolean
diff --git a/sources/content/src/Plugin/tmgmt/Source/ContentEntitySource.php b/sources/content/src/Plugin/tmgmt/Source/ContentEntitySource.php
index 3f675ed..342c87f 100644
--- a/sources/content/src/Plugin/tmgmt/Source/ContentEntitySource.php
+++ b/sources/content/src/Plugin/tmgmt/Source/ContentEntitySource.php
@@ -7,6 +7,8 @@
 
 namespace Drupal\tmgmt_content\Plugin\tmgmt\Source;
 
+use Drupal\Core\Entity\ContentEntityInterface;
+use Drupal\Core\Entity\Plugin\DataType\EntityReference;
 use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\Core\Field\FieldItemInterface;
 use Drupal\Core\TypedData\OptionsProviderInterface;
@@ -63,35 +65,46 @@ class ContentEntitySource extends SourcePluginBase {
     if (!isset($languages[$id])) {
       throw new TMGMTException(t('Entity %entity could not be translated because the language %language is not applicable', array('%entity' => $entity->language()->getId(), '%language' => $entity->language()->getName())));
     }
-    $field_definitions = $entity->getFieldDefinitions();
 
     if (!$entity->hasTranslation($job_item->getJob()->getSourceLangcode())) {
       throw new TMGMTException(t('The entity %id with translation %lang does not exist.', array('%id' => $entity->id(), '%lang' => $job_item->getJob()->getSourceLangcode())));
     }
 
+    $translation = $entity->getTranslation($job_item->getJob()->getSourceLangcode());
+    $data = $this->extractTranslatableData($translation);
+    return $data;
+  }
+
+  /**
+   * Extracts translatable data from an entity.
+   *
+   * @param \Drupal\Core\Entity\ContentEntityInterface $entity
+   *   The entity to get the the translatable data from.
+   *
+   * @return array $data
+   *   Translatable data.
+   */
+  public function extractTranslatableData(ContentEntityInterface $entity) {
+
     // @todo Expand this list or find a better solution to exclude fields like
     //   content_translation_source.
+
+    $field_definitions = $entity->getFieldDefinitions();
     $exclude_field_types = ['language'];
     $translatable_fields = array_filter($field_definitions, function (FieldDefinitionInterface $field_definition) use ($exclude_field_types) {
-      return $field_definition->isTranslatable() && !in_array($field_definition->getType(), $exclude_field_types);
+        return $field_definition->isTranslatable() && !in_array($field_definition->getType(), $exclude_field_types);
     });
 
     $data = array();
-    $translation = $entity->getTranslation($job_item->getJob()->getSourceLangcode());
     foreach ($translatable_fields as $key => $field_definition) {
-      $field = $translation->get($key);
-      $data[$key]['#label'] = $field_definition->getLabel();
+      $field = $entity->get($key);
       foreach ($field as $index => $field_item) {
-        $data[$key][$index]['#label'] = t('Delta #@delta', array('@delta' => $index));
         $format = NULL;
         /* @var FieldItemInterface $field_item */
         foreach ($field_item->getProperties() as $property_key => $property) {
           // Ignore computed values.
           $property_definition = $property->getDataDefinition();
-          if (($property_definition->isComputed())) {
-            continue;
-          }
-          // Ignore values that are not primitves.
+          // Ignore values that are not primitives.
           if (!($property instanceof PrimitiveInterface)) {
             continue;
           }
@@ -100,17 +113,24 @@ class ContentEntitySource extends SourcePluginBase {
           if ($property instanceof OptionsProviderInterface || !($property instanceof StringInterface)) {
             $translate = FALSE;
           }
+          // All the labels are here, to make sure we don't have empty labels in
+          // the UI because of no data.
+          if ($translate == TRUE) {
+            $data[$key]['#label'] = $field_definition->getLabel();
+            $data[$key][$index]['#label'] = t('Delta #@delta', array('@delta' => $index));
+          }
           $data[$key][$index][$property_key] = array(
             '#label' => $property_definition->getLabel(),
             '#text' => $property->getValue(),
             '#translate' => $translate,
           );
-          if($property_definition->getDataType() == 'filter_format'){
+
+          if ($property_definition->getDataType() == 'filter_format') {
             $format = $property->getValue();
           }
         }
         // Add the format to the translatable properties.
-        if(!empty($format)) {
+        if (!empty($format)) {
           foreach ($data[$key][$index] as $name => $value) {
             if (isset($value['#translate']) && $value['#translate'] == TRUE) {
               $data[$key][$index][$name]['#format'] = $format;
@@ -119,6 +139,28 @@ class ContentEntitySource extends SourcePluginBase {
         }
       }
     }
+
+    $embeddable_field_names = \Drupal::config('tmgmt_content.settings')->get('embedded_fields');
+    $embeddable_fields = array_filter($field_definitions, function (FieldDefinitionInterface $field_definition) use ($embeddable_field_names) {
+      return !$field_definition->isTranslatable() && isset($embeddable_field_names[$field_definition->getTargetEntityTypeId()][$field_definition->getName()]);
+    });
+    foreach ($embeddable_fields as $key => $field_definition) {
+      $field = $entity->get($key);
+      foreach ($field as $index => $field_item) {
+        /* @var FieldItemInterface $field_item */
+        foreach ($field_item->getProperties(TRUE) as $property_key => $property) {
+          // If the property is a content entity reference and it's value is
+          // defined, than we call this method again to get all the data.
+          if ($property instanceof EntityReference && $property->getValue() instanceof ContentEntityInterface) {
+            // All the labels are here, to make sure we don't have empty
+            // labels in the UI because of no data.
+            $data[$key]['#label'] = $field_definition->getLabel();
+            $data[$key][$index]['#label'] = t('Delta #@delta', array('@delta' => $index));
+            $data[$key][$index][$property_key] = $this->extractTranslatableData($property->getValue());
+          }
+        }
+      }
+    }
     return $data;
   }
 
@@ -130,26 +172,8 @@ class ContentEntitySource extends SourcePluginBase {
     $entity = entity_load($job_item->getItemType(), $job_item->getItemId());
     $job = $job_item->getJob();
 
-    // If the translation for this language does not exist yet, initialize it.
-    if (!$entity->hasTranslation($job->getTargetLangcode())) {
-      $entity->addTranslation($job->getTargetLangcode(), $entity->toArray());
-    }
-
-    $translation = $entity->getTranslation($job->getTargetLangcode());
     $data = $job_item->getData();
-    foreach ($data as $name => $field_data) {
-      foreach (Element::children($field_data) as $delta) {
-        $field_item = $field_data[$delta];
-        foreach (Element::children($field_item) as $property) {
-          $property_data = $field_item[$property];
-          if (isset($property_data['#translation']['#text'])) {
-            $translation->get($name)->offsetGet($delta)->set($property, $property_data['#translation']['#text']);
-          }
-        }
-      }
-    }
-
-    $translation->save();
+    $this->doSaveTranslations($entity, $data, $job->getTargetLangcode());
     $job_item->accepted();
   }
 
@@ -212,5 +236,45 @@ class ContentEntitySource extends SourcePluginBase {
     return array();
   }
 
+  /**
+   * Saves translation data in an entity translation.
+   *
+   * @param \Drupal\Core\Entity\ContentEntityInterface $entity
+   *   The entity for which the translation should be saved.
+   * @param array $data
+   *   The translation data for the fields.
+   * @param string $target_langcode
+   *   The target language.
+   */
+  protected function doSaveTranslations(ContentEntityInterface $entity, array $data, $target_langcode) {
+    // If the translation for this language does not exist yet, initialize it.
+    if (!$entity->hasTranslation($target_langcode)) {
+      $entity->addTranslation($target_langcode, $entity->toArray());
+    }
 
+    $embeded_fields = \Drupal::config('tmgmt_content.settings')->get('embedded_fields');
+
+    $translation = $entity->getTranslation($target_langcode);
+
+    foreach ($data as $name => $field_data) {
+      foreach (Element::children($field_data) as $delta) {
+        $field_item = $field_data[$delta];
+        foreach (Element::children($field_item) as $property) {
+          $property_data = $field_item[$property];
+          // If there is translation data for the field property, save it.
+          if (isset($property_data['#translation']['#text'])) {
+            $translation->get($name)
+              ->offsetGet($delta)
+              ->set($property, $property_data['#translation']['#text']);
+          }
+          // If the field is an embeddable reference, we assume that the
+          // property is a field reference.
+          elseif (isset($embeded_fields[$entity->getEntityTypeId()][$name])) {
+            $this->doSaveTranslations($translation->get($name)->offsetGet($delta)->$property, $property_data, $target_langcode);
+          }
+        }
+      }
+    }
+    $translation->save();
+  }
 }
diff --git a/sources/content/src/Tests/ContentEntitySourceUiTest.php b/sources/content/src/Tests/ContentEntitySourceUiTest.php
index a982f68..38c3e6a 100644
--- a/sources/content/src/Tests/ContentEntitySourceUiTest.php
+++ b/sources/content/src/Tests/ContentEntitySourceUiTest.php
@@ -10,6 +10,7 @@ namespace Drupal\tmgmt_content\Tests;
 use Drupal\comment\Entity\Comment;
 use Drupal\Core\Url;
 use Drupal\field\Entity\FieldConfig;
+use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\node\Entity\Node;
 use Drupal\tmgmt\Entity\Translator;
 use Drupal\tmgmt\Tests\EntityTestBase;
@@ -341,4 +342,85 @@ class ContentEntitySourceUiTest extends EntityTestBase {
     $this->assertRaw(t('There are @count items in the <a href="@url">translation cart</a> including the current item.',
         array('@count' => 3, '@url' => Url::fromRoute('tmgmt.cart')->toString())));
   }
+
+  /**
+   * Tests the embedded references.
+   */
+  function testEmbeddedReferences() {
+    // Create two reference fields, one to a translatable and untranslatable
+    // node type, one only for a untranslatable. Only the first one should be
+    // available.
+
+    $field1 = FieldStorageConfig::create(
+        array(
+          'field_name' => 'field1',
+          'entity_type' => 'node',
+          'type' => 'entity_reference',
+          'cardinality' => -1,
+          'settings' => array('target_type' => 'node'),
+        )
+      );
+    $field1->save();
+    $field2 = FieldStorageConfig::create(
+      array(
+        'field_name' => 'field2',
+        'entity_type' => 'node',
+        'type' => 'entity_reference',
+        'cardinality' => -1,
+        'settings' => array('target_type' => 'node'),
+      )
+    );
+    $field2->save();
+
+    $this->createNodeType('untranslatable', 'Untranslatable', FALSE);
+
+    // Create field instances on the content type.
+    FieldConfig::create(
+      array(
+        'field_storage' => $field1,
+        'bundle' => 'article',
+        'label' => 'Field 1',
+        'translatable' => FALSE,
+        'settings' => array(),
+      )
+    )->save();
+    FieldConfig::create(
+      array(
+        'field_storage' => $field1,
+        'bundle' => 'untranslatable',
+        'label' => 'Field 1',
+        'translatable' => FALSE,
+        'settings' => array(),
+      )
+    )->save();
+    FieldConfig::create(
+      array(
+        'field_storage' => $field2,
+        'bundle' => 'untranslatable',
+        'label' => 'Field 2',
+        'translatable' => FALSE,
+        'settings' => array(),
+      )
+    )->save();
+
+    $this->drupalGet('admin/config/regional/tmgmt_settings');
+
+    $checked_reference_fields = array(
+      'embedded_fields[node][field1]' => TRUE,
+    );
+
+    $this->assertNoField('embedded_fields[node][field_image]');
+    $this->assertNoField('embedded_fields[node][field_tags]');
+    $this->assertNoField('embedded_fields[node][title]');
+    $this->assertNoField('embedded_fields[node][uid]');
+    $this->assertNoField('embedded_fields[node][field2]');
+    $this->assertNoField('embedded_fields[node][type]');
+
+    $this->drupalPostForm(NULL, $checked_reference_fields, t('Save configuration'));
+
+    // Check if the save was successful.
+    $this->assertText(t('The configuration options have been saved.'));
+    $this->assertFieldChecked('edit-embedded-fields-node-field1');
+  }
+
 }
diff --git a/sources/content/src/Tests/ContentEntitySourceUnitTest.php b/sources/content/src/Tests/ContentEntitySourceUnitTest.php
index 144780f..01888eb 100644
--- a/sources/content/src/Tests/ContentEntitySourceUnitTest.php
+++ b/sources/content/src/Tests/ContentEntitySourceUnitTest.php
@@ -14,8 +14,6 @@ use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\node\Entity\Node;
 use Drupal\system\Tests\Entity\EntityUnitTestBase;
-use Drupal\Core\Language\Language;
-use Drupal\tmgmt\TMGMTException;
 
 /**
  * Content entity Source unit tests.
@@ -29,9 +27,9 @@ class ContentEntitySourceUnitTest extends EntityUnitTestBase {
    *
    * @var array
    */
-  public static $modules = array('tmgmt', 'tmgmt_content', 'tmgmt_test', 'node', 'entity', 'filter', 'file', 'image', 'language', 'content_translation', 'menu_link', 'options');
+  public static $modules = array('tmgmt', 'tmgmt_content', 'tmgmt_test', 'node', 'entity', 'filter', 'file', 'image', 'language', 'content_translation', 'menu_link', 'options', 'entity_reference');
 
-  protected $entity_type = 'entity_test_mul';
+  protected $entityTypeId = 'entity_test_mul';
 
   protected $image_label;
 
@@ -74,16 +72,16 @@ class ContentEntitySourceUnitTest extends EntityUnitTestBase {
 
     $field_storage = FieldStorageConfig::create(array(
       'field_name' => 'image_test',
-      'entity_type' => $this->entity_type,
+      'entity_type' => $this->entityTypeId,
       'type' => 'image',
       'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
       'translatable' => TRUE,
     ));
     $field_storage->save();
     FieldConfig::create(array(
-      'entity_type' => $this->entity_type,
+      'entity_type' => $this->entityTypeId,
       'field_storage' => $field_storage,
-      'bundle' => $this->entity_type,
+      'bundle' => $this->entityTypeId,
       'label' => $this->image_label = $this->randomMachineName(),
     ))->save();
     file_unmanaged_copy(DRUPAL_ROOT . '/core/misc/druplicon.png', 'public://example.jpg');
@@ -101,7 +99,7 @@ class ContentEntitySourceUnitTest extends EntityUnitTestBase {
       'langcode' => 'en',
       'user_id' => 1,
     );
-    $entity_test = entity_create($this->entity_type, $values);
+    $entity_test = entity_create($this->entityTypeId, $values);
     $translation = $entity_test->getTranslation('en');
     $translation->name->value = $this->randomMachineName();
     $values = array(
@@ -122,7 +120,7 @@ class ContentEntitySourceUnitTest extends EntityUnitTestBase {
     $job = tmgmt_job_create('en', 'de');
     $job->translator = 'test_translator';
     $job->save();
-    $job_item = tmgmt_job_item_create('content', $this->entity_type, $entity_test->id(), array('tjid' => $job->id()));
+    $job_item = tmgmt_job_item_create('content', $this->entityTypeId, $entity_test->id(), array('tjid' => $job->id()));
     $job_item->save();
 
     $source_plugin = $this->container->get('plugin.manager.tmgmt.source')->createInstance('content');
@@ -179,7 +177,7 @@ class ContentEntitySourceUnitTest extends EntityUnitTestBase {
     $data = $item->getData();
 
     // Check that the translations were saved correctly.
-    $entity_test = entity_load($this->entity_type, $entity_test->id());
+    $entity_test = entity_load($this->entityTypeId, $entity_test->id());
     $translation = $entity_test->getTranslation('de');
 
     $this->assertEqual($translation->name->value, $data['name'][0]['value']['#translation']['#text']);
@@ -348,4 +346,104 @@ class ContentEntitySourceUnitTest extends EntityUnitTestBase {
     return $type;
   }
 
+  /**
+   * Test extraction and saving translation for embedded references.
+   */
+  public function testEmbeddedReferences() {
+    $field1 = FieldStorageConfig::create(array(
+      'field_name' => 'field1',
+      'entity_type' => $this->entityTypeId,
+      'type' => 'entity_reference',
+      'cardinality' => -1,
+      'settings' => array('target_type' => $this->entityTypeId),
+    ));
+    $field1->save();
+    $field2 = FieldStorageConfig::create(array(
+      'field_name' => 'field2',
+      'entity_type' => $this->entityTypeId,
+      'type' => 'entity_reference',
+      'cardinality' => -1,
+      'settings' => array('target_type' => $this->entityTypeId),
+    ));
+    $field2->save();
+
+    // Create field instances on the content type.
+    FieldConfig::create(array(
+      'field_storage' => $field1,
+      'bundle' => $this->entityTypeId,
+      'label' => 'Field 1',
+      'translatable' => FALSE,
+      'settings' => array(),
+    ))->save();
+    FieldConfig::create(array(
+      'field_storage' => $field2,
+      'bundle' => $this->entityTypeId,
+      'label' => 'Field 2',
+      'translatable' => FALSE,
+      'settings' => array(),
+    ))->save();
+
+    // Create a test entity that can be referenced.
+    $referenced_values = [
+      'langcode' => 'en',
+      'user_id' => 1,
+      'name' => $this->randomString(),
+    ];
+
+    $this->config('tmgmt_content.settings')
+      ->set('embedded_fields.' . $this->entityTypeId . '.field1', TRUE)
+      ->save();
+
+    $referenced_entity = entity_create($this->entityTypeId, $referenced_values);
+    $referenced_entity->save();
+
+    // Create an english test entity.
+    $values = array(
+      'langcode' => 'en',
+      'user_id' => 1,
+    );
+    $entity_test = entity_create($this->entityTypeId, $values);
+    $translation = $entity_test->getTranslation('en');
+    $translation->name->value = $this->randomMachineName();
+
+    $translation->field1->target_id = $referenced_entity->id();
+    $translation->field2->target_id = $referenced_entity->id();
+
+    $entity_test->save();
+
+    $job = tmgmt_job_create('en', 'de');
+    $job->translator = 'test_translator';
+    $job->save();
+    $job_item = tmgmt_job_item_create('content', $this->entityTypeId, $entity_test->id(), array('tjid' => $job->id()));
+    $job_item->save();
+
+    $source_plugin = $this->container->get('plugin.manager.tmgmt.source')->createInstance('content');
+    $data = $source_plugin->getData($job_item);
+
+    // Ensure that field 2 is not in the extracted data.
+    $this->assertFalse(isset($data['field2']));
+
+    // Ensure some labels and structure for field 1.
+    $this->assertEqual($data['field1']['#label'], 'Field 1');
+    $this->assertEqual($data['field1'][0]['#label'], 'Delta #0');
+    $this->assertEqual($data['field1'][0]['entity']['name']['#label'], 'Name');
+    $this->assertEqual($data['field1'][0]['entity']['name'][0]['value']['#text'], $referenced_values['name']);
+
+    // Now request a translation and save it back.
+    $job->requestTranslation();
+    $items = $job->getItems();
+    $item = reset($items);
+    $item->acceptTranslation();
+    $data = $item->getData();
+
+    // Check that the translations were saved correctly.
+    $entity_test = entity_load($this->entityTypeId, $entity_test->id());
+    $translation = $entity_test->getTranslation('de');
+
+    $referenced_entity = entity_load($this->entityTypeId, $referenced_entity->id());
+    $referenced_translation = $referenced_entity->getTranslation('de');
+    $this->assertEqual($referenced_translation->name->value, $data['field1'][0]['entity']['name'][0]['value']['#translation']['#text']);
+
+  }
+
 }
diff --git a/sources/content/tmgmt_content.module b/sources/content/tmgmt_content.module
index 8cc5fb4..5376198 100644
--- a/sources/content/tmgmt_content.module
+++ b/sources/content/tmgmt_content.module
@@ -7,6 +7,7 @@
 use Drupal\Core\Entity\Plugin\DataType\EntityReference;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\tmgmt\JobInterface;
+use \Drupal\field\FieldStorageConfigInterface;
 
 /**
  * Implements hook_tmgmt_source_suggestions()
@@ -54,3 +55,105 @@ function tmgmt_content_tmgmt_source_suggestions(array $items, JobInterface $job)
 
   return $suggestions;
 }
+
+  /**
+   * Implements hook_form_FORM_ID_alter() for tmgmt_settings_form().
+   *
+   * @param array $form
+   * @param \Drupal\Core\Form\FormStateInterface $form_state
+   */
+function tmgmt_content_form_tmgmt_settings_form_alter(array &$form, FormStateInterface $form_state) {
+  module_load_include('inc', 'views', 'views.views');
+  $entity_types = \Drupal::entityManager()->getDefinitions();
+
+  $form['content']['embedded_fields'] = array(
+    '#type' => 'details',
+    '#title' => t('Embedded references'),
+    '#description' => t('All checked reference fields will automatically add the translatable data of the reference to the job. This is only available when the reference is untranslatable and the target is enabled for translation.'),
+    '#tree' => TRUE,
+    '#open' => TRUE,
+  );
+
+  $content_translation_manager = \Drupal::service('content_translation.manager');
+
+  foreach ($entity_types as $entity_type) {
+    if ($content_translation_manager->isEnabled($entity_type->id())) {
+      $field_options = array();
+      $translatable_bundles = array_filter(array_keys(\Drupal::entityManager()->getBundleInfo($entity_type->id())), function ($bundle) use ($entity_type, $content_translation_manager) {
+        return $content_translation_manager->isEnabled($entity_type->id(), $bundle);
+      });
+      $storage_definitions = \Drupal::entityManager()->getFieldStorageDefinitions($entity_type->id());
+
+      foreach ($storage_definitions as $field_name => $storage_definition) {
+        // Filter out storage definitions that don't have at least one
+        // untranslatable field definition on a translatable bundle.
+        $allowed_option = FALSE;
+        foreach ($translatable_bundles as $bundle) {
+          $field_definitions = \Drupal::entityManager()->getFieldDefinitions($entity_type->id(), $bundle);
+          if (isset($field_definitions[$field_name]) && !$field_definitions[$field_name]->isTranslatable()) {
+            $allowed_option = TRUE;
+            break;
+          }
+        }
+
+        if (!$allowed_option) {
+          continue;
+        }
+
+        $property_definitions = $storage_definition->getPropertyDefinitions();
+        foreach ($property_definitions as $property_definition) {
+          // Look for entity_reference properties where the storage definition
+          // has a target type setting and that is enabled for content
+          // translation.
+          // @todo Support dynamic entity references.
+          if ($property_definition->getDataType() == 'entity_reference' && $storage_definition->getSetting('target_type') && $content_translation_manager->isEnabled($storage_definition->getSetting('target_type'))) {
+            if ($storage_definition instanceof FieldStorageConfigInterface) {
+              list($label) = views_entity_field_label($entity_type->id(), $storage_definition->getName());
+              $field_options[$storage_definition->getName()] = $label;
+            }
+            else {
+              $field_options[$storage_definition->getName()] = $storage_definition->getLabel();
+            }
+            break;
+          }
+        }
+      }
+      if (!empty($field_options)) {
+        if (\Drupal::config('tmgmt_content.settings')->get('embedded_fields.' . $entity_type->id())) {
+          $form['content']['embedded_fields'][$entity_type->id()] = array(
+            '#type' => 'checkboxes',
+            '#title' => $entity_type->getLabel(),
+            '#options' => $field_options,
+            '#default_value' => array_keys(\Drupal::config('tmgmt_content.settings')->get('embedded_fields.' . $entity_type->id())),
+          );
+        }
+        else {
+          $form['content']['embedded_fields'][$entity_type->id()] = array(
+            '#type' => 'checkboxes',
+            '#title' => $entity_type->getLabel(),
+            '#options' => $field_options,
+          );
+        }
+
+      }
+    }
+  }
+
+  $form['#submit'][] = 'tmgmt_content_settings_submit';
+}
+
+/**
+ * Submit function set by tmgmt_content_form_tmgmt_settings_form_alter().
+ */
+function tmgmt_content_settings_submit(array &$form, FormStateInterface $form_state) {
+  $embedded_fields = array();
+  foreach ($form_state->getValue('embedded_fields') as $key => $fields) {
+    foreach (array_filter($fields) as $id => $label) {
+      $embedded_fields[$key][$id] = TRUE;
+    }
+  }
+
+  \Drupal::configFactory()->getEditable('tmgmt_content.settings')
+    ->set('embedded_fields', $embedded_fields)
+    ->save();
+}
diff --git a/src/Form/SettingsForm.php b/src/Form/SettingsForm.php
index 878026b..02f4eb9 100644
--- a/src/Form/SettingsForm.php
+++ b/src/Form/SettingsForm.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\tmgmjt\Controller\SettingsForm.
+ * Contains \Drupal\tmgmt\Controller\SettingsForm.
  */
 
 namespace Drupal\tmgmt\Form;
diff --git a/src/Tests/EntityTestBase.php b/src/Tests/EntityTestBase.php
index 27b32ce..6c9aae5 100644
--- a/src/Tests/EntityTestBase.php
+++ b/src/Tests/EntityTestBase.php
@@ -39,20 +39,19 @@ abstract class EntityTestBase extends TMGMTTestBase {
    *   Machine name of the node type.
    * @param string $human_name
    *   Human readable name of the node type.
-   * @param int $language_content_type
-   *   Either 0 (disabled), 1 (language enabled but no translations),
-   *   TRANSLATION_ENABLED or ENTITY_TRANSLATION_ENABLED.
+   * @param bool $translation
+   *   TRUE if translation for this enitty type should be enabled.
    * pparam bool $attach_fields
    *   (optional) If fields with the same translatability should automatically
    *   be attached to the node type.
    */
-  function createNodeType($machine_name, $human_name, $entity_translation = FALSE, $attach_fields = TRUE) {
+  function createNodeType($machine_name, $human_name, $translation = FALSE, $attach_fields = TRUE) {
     $type = $this->drupalCreateContentType(array('type' => $machine_name, 'name' => $human_name));
 
     // Push in also the body field.
     $this->field_names['node'][$machine_name][] = 'body';
 
-    if (\Drupal::hasService('content_translation.manager')) {
+    if (\Drupal::hasService('content_translation.manager') && $translation) {
       $content_translation_manager = \Drupal::service('content_translation.manager');
       $content_translation_manager->setEnabled('node', $machine_name, TRUE);
     }
@@ -60,7 +59,7 @@ abstract class EntityTestBase extends TMGMTTestBase {
     $this->applySchemaUpdates();
 
     if ($attach_fields) {
-      $this->attachFields('node', $machine_name, $entity_translation);
+      $this->attachFields('node', $machine_name, $translation);
     }
     else {
     // Change body field to be translatable.
