diff --git a/core/modules/migrate_drupal/config/migrate.migration.d7_language_negotiation.yml b/core/modules/migrate_drupal/config/migrate.migration.d7_language_negotiation.yml
new file mode 100644
index 0000000..30bd4cc
--- /dev/null
+++ b/core/modules/migrate_drupal/config/migrate.migration.d7_language_negotiation.yml
@@ -0,0 +1,12 @@
+id: d7_language_negotiation
+source:
+  plugin: variable
+  variables:
+    - locale_language_negotiation_session_param
+    - locale_language_negotiation_url_part
+process:
+  session.parameter: locale_language_negotiation_session_param
+  url.source: locale_language_negotiation_url_part
+destination:
+  plugin: config
+  config_name: language.negotiation
diff --git a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal7LanguageNegotiation.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal7LanguageNegotiation.php
new file mode 100644
index 0000000..82ffaeb
--- /dev/null
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal7LanguageNegotiation.php
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\Dump\Drupal7LanguageNegotiation.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Dump;
+
+/**
+ * Database dump for testing language.negotiation.yml migration.
+ */
+class Drupal7LanguageNegotiation extends Drupal6DumpBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function load() {
+    $this->createTable('variable');
+    $this->database->insert('variable')->fields(array(
+      'name',
+      'value',
+    ))
+    ->values(array(
+        'name' => 'locale_language_negotiation_session_param',
+        'value' => serialize('language');
+      ),
+      array(
+        'name' => 'locale_language_negotiation_url_part',
+        'value' => "b:0;",
+      ))
+    ->execute();
+  }
+
+}
diff --git a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d7/MigrateLanguageNegotiationTest.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d7/MigrateLanguageNegotiationTest.php
new file mode 100644
index 0000000..7edf183
--- /dev/null
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d7/MigrateLanguageNegotiationTest.php
@@ -0,0 +1,54 @@
+
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\d7\MigrateLanguageNegotiationTest.
+ */
+
+namespace Drupal\migrate_drupal\Tests\d7;
+
+use Drupal\migrate\MigrateMessage;
+use Drupal\migrate\MigrateExecutable;
+use Drupal\migrate_drupal\Tests\MigrateDrupalTestBase;
+
+/**
+ * Tests migration of language negotiation variables.
+ */
+class MigrateLanguageNegotiationTest extends MigrateDrupalTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('locale');
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function getInfo() {
+    return array(
+      'name'  => 'Migrate variables to language.negotiation.yml',
+      'description'  => 'Upgrade variables to language.negotiation.yml',
+      'group' => 'Migrate Drupal',
+    );
+  }
+
+  /**
+   * Tests migration of language negotiation variables to language.negotiation.yml.
+   */
+  public function testLanguageNegotiation() {
+    $migration = entity_load('migration', 'd7_language_negotiation');
+    $dumps = array(
+      drupal_get_path('module', 'migrate_drupal') . '/lib/Drupal/migrate_drupal/Tests/Dump/Drupal7ImageSettings.php',
+    );
+    $this->prepare($migration, $dumps);
+    $executable = new MigrateExecutable($migration, $this);
+    $executable->import();
+    $config = \Drupal::config('image.settings');
+    $this->assertIdentical($config->get('allow_insecure_derivatives'), FALSE);
+    $this->assertIdentical($config->get('suppress_itok_output'), FALSE);
+  }
+
+}
