diff --git a/core/modules/language/migration_templates/d6_default_language.yml b/core/modules/language/migration_templates/d6_default_language.yml
new file mode 100644
index 0000000..9813d01
--- /dev/null
+++ b/core/modules/language/migration_templates/d6_default_language.yml
@@ -0,0 +1,22 @@
+id: d6_default_language
+label: Default language
+migration_tags:
+  - Drupal 6
+source:
+  plugin: variable
+  variables:
+    - language_default
+process:
+  default_langcode:
+    -
+      plugin: callback
+      callable: get_object_vars
+      source: language_default
+    -
+      plugin: extract
+      index:
+        - language
+
+destination:
+  plugin: config
+  config_name: system.site
diff --git a/core/modules/language/src/Tests/Migrate/d6/MigrateDefaultLanguageTest.php b/core/modules/language/src/Tests/Migrate/d6/MigrateDefaultLanguageTest.php
new file mode 100644
index 0000000..ff5965a
--- /dev/null
+++ b/core/modules/language/src/Tests/Migrate/d6/MigrateDefaultLanguageTest.php
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\language\Tests\Migrate\d6\MigrateDefaultLanguageTest.
+ */
+
+namespace Drupal\language\Tests\Migrate\d6;
+
+use Drupal\language\Entity\ConfigurableLanguage;
+use Drupal\Tests\migrate_drupal\Kernel\d6\MigrateDrupal6TestBase;
+
+/**
+ * Tests the default language variable migration.
+ *
+ * @group migrate_drupal_6
+ */
+class MigrateDefaultLanguageTest extends MigrateDrupal6TestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['language'];
+
+  /**
+   * Tests the migration of the language_default variable to the
+   * system.site.default_langcode config key, with an existing language.
+   */
+  public function testMigrationWithExistingLanguage() {
+    $this->doTestMigration('fr');
+  }
+
+  /**
+   * Tests the migration of the language_default variable to the
+   * system.site.default_langcode config key, with a non-existent language.
+   */
+  public function testMigrationWithNonExistentLanguage() {
+    $this->doTestMigration('tv');
+  }
+
+  /**
+   * Helper method to test the migration.
+   */
+  protected function doTestMigration($langcode) {
+    // The default language of the test fixture is English. Change it to
+    // something else before migrating, to be sure that the source site
+    // default language is migrated.
+    $value = 'O:8:"stdClass":11:{s:8:"language";s:2:"' . $langcode . '";s:4:"name";s:6:"French";s:6:"native";s:6:"French";s:9:"direction";s:1:"0";s:7:"enabled";i:1;s:7:"plurals";s:1:"0";s:7:"formula";s:0:"";s:6:"domain";s:0:"";s:6:"prefix";s:0:"";s:6:"weight";s:1:"0";s:10:"javascript";s:0:"";}';
+    $this->sourceDatabase->update('variable')
+      ->fields(array(
+        'value' => $value
+      ))
+      ->condition('name', 'language_default' )
+      ->execute();
+    $this->executeMigration('language');
+    $this->executeMigration('d6_default_language');
+    $default_language = ConfigurableLanguage::load($langcode);
+    $this->assertNotNull($default_language);
+    $this->assertIdentical($langcode, $this->config('system.site')->get('default_langcode'));
+  }
+
+}
diff --git a/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php b/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php
index fdcb26e..c886db2 100644
--- a/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php
+++ b/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php
@@ -162,6 +162,10 @@ class MigrateUpgradeForm extends ConfirmFormBase {
       'source_module' => 'contact',
       'destination_module' => 'contact',
     ],
+    'd6_default_language' => [
+      'source_module' => 'locale',
+      'destination_module' => 'language',
+    ],
     'd6_dblog_settings' => [
       'source_module' => 'dblog',
       'destination_module' => 'dblog',
