diff --git a/core/modules/language/migration_templates/d6_language_content_settings.yml b/core/modules/language/migration_templates/d6_language_content_settings.yml
new file mode 100644
index 0000000..86ba4d2
--- /dev/null
+++ b/core/modules/language/migration_templates/d6_language_content_settings.yml
@@ -0,0 +1,42 @@
+id: d6_language_content_settings
+label: Drupal 6 language content settings
+migration_tags:
+  - Drupal 6
+source:
+  plugin: d6_language_content_settings
+  constants:
+    target_type: 'node'
+process:
+# Ignore i18n_node_options_[node_type] options not available in Drupal 8,
+# i18n_required_node and i18n_newnode_current
+  target_bundle: type
+  target_entity_type_id: 'constants/target_type'
+  default_langcode:
+    -
+      plugin: static_map
+      source: language_content_type
+      map:
+        0: NULL
+        1: 'current_interface'
+        2: 'current_interface'
+    -
+      plugin: skip_on_empty
+      method: row
+  language_alterable:
+    plugin: static_map
+    source: i18n_lock_node
+    map:
+      0: true
+      1: false
+  'third_party_settings/content_translation/enabled':
+    plugin: static_map
+    source: language_content_type
+    map:
+      0: NULL
+      1: false
+      2: true
+destination:
+  plugin: entity:language_content_settings
+migration_dependencies:
+  required:
+    - d6_node_type
diff --git a/core/modules/language/migration_templates/d7_language_content_settings.yml b/core/modules/language/migration_templates/d7_language_content_settings.yml
new file mode 100644
index 0000000..4e7d6a0
--- /dev/null
+++ b/core/modules/language/migration_templates/d7_language_content_settings.yml
@@ -0,0 +1,42 @@
+id: d7_language_content_settings
+label: Drupal 7 language content settings
+migration_tags:
+  - Drupal 7
+source:
+  plugin: d7_language_content_settings
+  constants:
+    target_type: 'node'
+process:
+# Ignore i18n_node_options_[node_type] options not available in Drupal 8,
+# i18n_required_node and i18n_newnode_current
+  target_bundle: type
+  target_entity_type_id: 'constants/target_type'
+  default_langcode:
+    -
+      plugin: static_map
+      source: language_content_type
+      map:
+        0: NULL
+        1: 'current_interface'
+        2: 'current_interface'
+    -
+      plugin: skip_on_empty
+      method: row
+  language_alterable:
+    plugin: static_map
+    source: i18n_lock_node
+    map:
+      0: true
+      1: false
+  'third_party_settings/content_translation/enabled':
+    plugin: static_map
+    source: language_content_type
+    map:
+      0: NULL
+      1: false
+      2: true
+destination:
+  plugin: entity:language_content_settings
+migration_dependencies:
+  required:
+    - d7_node_type
diff --git a/core/modules/language/src/Plugin/migrate/source/d6/LanguageContentSettings.php b/core/modules/language/src/Plugin/migrate/source/d6/LanguageContentSettings.php
new file mode 100644
index 0000000..d955fe4
--- /dev/null
+++ b/core/modules/language/src/Plugin/migrate/source/d6/LanguageContentSettings.php
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\language\Plugin\migrate\source\d6\LanguageContentSettings.
+ */
+
+namespace Drupal\language\Plugin\migrate\source\d6;
+
+use Drupal\migrate\Row;
+use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase;
+
+/**
+ * Drupal multilingual node settings from database.
+ *
+ * @MigrateSource(
+ *   id = "d6_language_content_settings",
+ * )
+ */
+class LanguageContentSettings extends DrupalSqlBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function query() {
+    return $this->select('node_type', 't')
+      ->fields('t', array(
+        'type',
+      ));
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function fields() {
+    $fields = array(
+      'type' => $this->t('Type'),
+      'language_content_type' => $this->t('Multilingual support.'),
+      'i18n_lock_node' => $this->t('Lock language.'),
+    );
+    return $fields;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function prepareRow(Row $row) {
+    $type = $row->getSourceProperty('type');
+    $row->setSourceProperty('language_content_type', $this->variableGet('language_content_type_' . $type, NULL));
+    $row->setSourceProperty('i18n_lock_node', $this->variableGet('i18n_lock_node_' . $type, NULL));
+    return parent::prepareRow($row);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getIds() {
+    $ids['type']['type'] = 'string';
+    return $ids;
+  }
+
+}
diff --git a/core/modules/language/src/Plugin/migrate/source/d7/LanguageContentSettings.php b/core/modules/language/src/Plugin/migrate/source/d7/LanguageContentSettings.php
new file mode 100644
index 0000000..04f0f40
--- /dev/null
+++ b/core/modules/language/src/Plugin/migrate/source/d7/LanguageContentSettings.php
@@ -0,0 +1,73 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\language\Plugin\migrate\source\d7\LanguageContentSettings.
+ */
+
+namespace Drupal\language\Plugin\migrate\source\d7;
+
+use Drupal\migrate\Row;
+use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase;
+
+/**
+ * Drupal multilingual node settings from database.
+ *
+ * @MigrateSource(
+ *   id = "d7_language_content_settings",
+ * )
+ */
+class LanguageContentSettings extends DrupalSqlBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function query() {
+    return $this->select('node_type', 't')
+      ->fields('t', array(
+        'type',
+      ));
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function fields() {
+    $fields = array(
+      'type' => $this->t('Type'),
+      'language_content_type' => $this->t('Multilingual support.'),
+      'i18n_lock_node' => $this->t('Lock language.'),
+    );
+    return $fields;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function prepareRow(Row $row) {
+    $type = $row->getSourceProperty('type');
+    $row->setSourceProperty('language_content_type', $this->variableGet('language_content_type_' . $type, NULL));
+    if ($this->getModuleSchemaVersion('system') >= 7000) {
+      $i18n_node_options = $this->variableGet('i18n_node_options_' . $type, NULL);
+      if ($i18n_node_options && in_array('lock', $i18n_node_options)) {
+        $row->setSourceProperty('i18n_lock_node', 1);
+      }
+      else {
+        $row->setSourceProperty('i18n_lock_node', 0);
+      }
+    }
+    else {
+      $row->setSourceProperty('i18n_lock_node', $this->variableGet('i18n_lock_node_' . $type, NULL));
+    }
+    return parent::prepareRow($row);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getIds() {
+    $ids['type']['type'] = 'string';
+    return $ids;
+  }
+
+}
diff --git a/core/modules/language/src/Tests/Migrate/d6/MigrateLanguageContentSettingsTest.php b/core/modules/language/src/Tests/Migrate/d6/MigrateLanguageContentSettingsTest.php
new file mode 100644
index 0000000..0d5a5de
--- /dev/null
+++ b/core/modules/language/src/Tests/Migrate/d6/MigrateLanguageContentSettingsTest.php
@@ -0,0 +1,47 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\language\Tests\Migrate\d6\MigrateLanguageContentSettingsTest.
+ */
+
+namespace Drupal\language\Tests\Migrate\d6;
+
+use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
+
+/**
+ * Tests migration of language content setting variables,
+ * language_content_type_$type, i18n_node_options_* and i18n_lock_node_*.
+ *
+ * @group migrate_drupal_6
+ */
+class MigrateLanguageContentSettingsTest extends MigrateDrupal6TestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['node', 'text', 'language', 'content_translation'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->installConfig(['node']);
+    $this->executeMigration('d6_node_type');
+    $this->executeMigration('d6_language_content_settings');
+  }
+
+  /**
+   * Tests migration of content language settings.
+   */
+  public function testLanguageContent() {
+    $config = $this->config('language.content_settings.node.article');
+    $this->assertIdentical($config->get('target_entity_type_id'), 'node');
+    $this->assertIdentical($config->get('target_bundle'), 'article');
+    $this->assertIdentical($config->get('default_langcode'), 'current_interface');
+    $this->assertTrue($config->get('third_party_settings.content_translation.enabled'));
+  }
+
+}
diff --git a/core/modules/language/src/Tests/Migrate/d7/MigrateLanguageContentSettingsTest.php b/core/modules/language/src/Tests/Migrate/d7/MigrateLanguageContentSettingsTest.php
new file mode 100644
index 0000000..f10b00a
--- /dev/null
+++ b/core/modules/language/src/Tests/Migrate/d7/MigrateLanguageContentSettingsTest.php
@@ -0,0 +1,46 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\language\Tests\Migrate\d7\MigrateLanguageContentSettingsTest.
+ */
+
+namespace Drupal\language\Tests\Migrate\d7;
+
+use Drupal\migrate_drupal\Tests\d7\MigrateDrupal7TestBase;
+
+/**
+ * Tests migration of language content setting variables,
+ * language_content_type_$type, i18n_node_options_* and i18n_lock_node_*.
+ *
+ * @group migrate_drupal_7
+ */
+class MigrateLanguageContentSettingsTest extends MigrateDrupal7TestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['node', 'text', 'language', 'content_translation'];
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->installConfig(['node']);
+    $this->executeMigrations(['d7_node_type', 'd7_language_content_settings']);
+  }
+
+  /**
+   * Tests migration of content language settings.
+   */
+  public function testLanguageContent() {
+    $config = $this->config('language.content_settings.node.blog');
+    $this->assertIdentical($config->get('target_entity_type_id'), 'node');
+    $this->assertIdentical($config->get('target_bundle'), 'blog');
+    $this->assertIdentical($config->get('default_langcode'), 'current_interface');
+    $this->assertFalse($config->get('language_alterable'));
+    $this->assertTrue($config->get('third_party_settings.content_translation.enabled'));
+  }
+
+}
diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal6.php b/core/modules/migrate_drupal/tests/fixtures/drupal6.php
index 76b3bf6..1829cca 100644
--- a/core/modules/migrate_drupal/tests/fixtures/drupal6.php
+++ b/core/modules/migrate_drupal/tests/fixtures/drupal6.php
@@ -33602,6 +33602,10 @@
   'value' => 's:1:"2";',
 ))
 ->values(array(
+  'name' => 'i18n_lock_node_article',
+  'value' => 'i:1;',
+))
+->values(array(
   'name' => 'language_count',
   'value' => 'i:2;',
 ))
diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal7.php b/core/modules/migrate_drupal/tests/fixtures/drupal7.php
index 0e94e8f..a81380d 100644
--- a/core/modules/migrate_drupal/tests/fixtures/drupal7.php
+++ b/core/modules/migrate_drupal/tests/fixtures/drupal7.php
@@ -41261,6 +41261,10 @@
   'value' => 's:1:"0";',
 ))
 ->values(array(
+  'name' => 'i18n_node_options_blog',
+  'value' => 'a:2:{i:0;s:8:"required";i:1;s:4:"lock";}',
+))
+->values(array(
   'name' => 'language_count',
   'value' => 'i:2;',
 ))
