diff --git a/core/modules/language/config/schema/language.source.schema.yml b/core/modules/language/config/schema/language.source.schema.yml
new file mode 100644
index 0000000..e03aef5
--- /dev/null
+++ b/core/modules/language/config/schema/language.source.schema.yml
@@ -0,0 +1,7 @@
+migrate.source.d6_language_negotiation_settings:
+  type: migrate_source_sql
+  label: 'Drupal 6 language negotiation settings'
+  mapping:
+    constants:
+      type: migrate_entity_constant
+      label: 'Constants'
diff --git a/core/modules/language/migration_templates/d6_language_negotiation_settings.yml b/core/modules/language/migration_templates/d6_language_negotiation_settings.yml
new file mode 100644
index 0000000..4a0c9ef
--- /dev/null
+++ b/core/modules/language/migration_templates/d6_language_negotiation_settings.yml
@@ -0,0 +1,26 @@
+id: d6_language_negotiation_settings
+label: Language negotiation settings
+migration_tags:
+  - Drupal 6
+source:
+  plugin: variable
+  variables:
+    - language_negotiation
+  constants:
+    session_parameter: 'language'
+process:
+  'session/parameter': 'constants/session_parameter'
+  'url/source':
+    plugin: static_map
+    source: language_negotiation
+    map:
+      # LANGUAGE_NEGOTIATION_NONE = 0
+      # LANGUAGE_NEGOTIATION_PATH_DEFAULT = 1
+      # LANGUAGE_NEGOTIATION_PATH = 2
+      # LANGUAGE_NEGOTIATION_DOMAIN = 3
+      1: path_prefix
+      2: path_prefix
+      3: domain
+destination:
+  plugin: config
+  config_name: language.negotiation
diff --git a/core/modules/language/src/Tests/Migrate/d6/MigrateLanguageNegotiationSettingsTest.php b/core/modules/language/src/Tests/Migrate/d6/MigrateLanguageNegotiationSettingsTest.php
new file mode 100644
index 0000000..e0a7788
--- /dev/null
+++ b/core/modules/language/src/Tests/Migrate/d6/MigrateLanguageNegotiationSettingsTest.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\language\Tests\Migrate\d6\MigrateLanguageNegotiationSettingsTest.
+ */
+
+namespace Drupal\language\Tests\Migrate\d6;
+
+use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
+
+/**
+ * Tests migration of language negotiation variables.
+ *
+ * @group migrate_drupal_6
+ */
+class MigrateLanguageNegotiationSettingsTest extends MigrateDrupal6TestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['language'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->executeMigration('d6_language_negotiation_settings');
+  }
+
+  /**
+   * Tests migration of language negotiation variables to language.negotiation.yml.
+   */
+  public function testLanguageNegotiation() {
+    $config = $this->config('language.negotiation');
+    $this->assertIdentical($config->get('session.parameter'), 'language');
+    $this->assertIdentical($config->get('url.source'), 'path_prefix');
+  }
+
+}
diff --git a/core/modules/migrate_drupal/config/schema/migrate_drupal.source.schema.yml b/core/modules/migrate_drupal/config/schema/migrate_drupal.source.schema.yml
index 6152f9e..79ab5cc 100644
--- a/core/modules/migrate_drupal/config/schema/migrate_drupal.source.schema.yml
+++ b/core/modules/migrate_drupal/config/schema/migrate_drupal.source.schema.yml
@@ -147,6 +147,9 @@ migrate_entity_constant:
     status:
       type: boolean
       label: 'Status'
+    session_parameter:
+      type: string
+      label: 'Session parameter'
 
 migrate.source.md_empty:
   type: migrate.source.empty
diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal6.php b/core/modules/migrate_drupal/tests/fixtures/drupal6.php
index 0f60343..6b8fb84 100644
--- a/core/modules/migrate_drupal/tests/fixtures/drupal6.php
+++ b/core/modules/migrate_drupal/tests/fixtures/drupal6.php
@@ -33544,6 +33544,10 @@
   'value' => 'O:8:"stdClass":11:{s:8:"language";s:2:"en";s:4:"name";s:7:"English";s:6:"native";s:7:"English";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:"";}',
 ))
 ->values(array(
+  'name' => 'language_negotiation',
+  'value' => 's:1:"2";',
+))
+->values(array(
   'name' => 'locale_cache_strings',
   'value' => 'i:1;',
 ))
