diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigEntityStorage.php b/core/lib/Drupal/Core/Config/Entity/ConfigEntityStorage.php
index 1527ac6467eeaf03c463a0fe37cfbe64c6b6be31..27da150462a61664972f5b224ba4058ebc4b6b9e 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigEntityStorage.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigEntityStorage.php
@@ -195,8 +195,8 @@ protected function doLoadMultiple(array $ids = NULL) {
    * {@inheritdoc}
    */
   protected function doCreate(array $values) {
-    // Set default language to site default if not provided.
-    $values += array($this->langcodeKey => $this->languageManager->getDefaultLanguage()->getId());
+    // Set default language to current language if not provided.
+    $values += array($this->langcodeKey => $this->languageManager->getCurrentLanguage()->getId());
     $entity = new $this->entityClass($values, $this->entityTypeId);
 
     return $entity;
diff --git a/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityStorageTest.php b/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityStorageTest.php
index f754615aac537d5e490d236a4828478aefb8bdc0..2302eaa76b28a0d50b2e69f8fda0660be518b437 100644
--- a/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityStorageTest.php
+++ b/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityStorageTest.php
@@ -139,8 +139,8 @@ protected function setUp() {
 
     $this->languageManager = $this->getMock('Drupal\Core\Language\LanguageManagerInterface');
     $this->languageManager->expects($this->any())
-      ->method('getDefaultLanguage')
-      ->will($this->returnValue(new Language(array('langcode' => 'en'))));
+      ->method('getCurrentLanguage')
+      ->willReturn(new Language(array('id' => 'hu')));
 
     $this->configFactory = $this->getMock('Drupal\Core\Config\ConfigFactoryInterface');
 
@@ -175,6 +175,7 @@ protected function setUp() {
     $container->set('config.typed', $this->typedConfigManager);
     $container->set('cache_tags.invalidator', $this->cacheTagsInvalidator);
     $container->set('config.manager', $this->configManager);
+    $container->set('language_manager', $this->languageManager);
     \Drupal::setContainer($container);
 
   }
@@ -229,6 +230,34 @@ public function testCreate() {
     return $entity;
   }
 
+  /**
+   * @covers ::create
+   * @covers ::doCreate
+   */
+  public function testCreateWithCurrentLanguage() {
+    $this->languageManager->expects($this->any())
+      ->method('getLanguage')
+      ->with('hu')
+      ->willReturn(new Language(array('id' => 'hu')));
+
+    $entity = $this->entityStorage->create(array('id' => 'foo'));
+    $this->assertSame('hu', $entity->language()->getId());
+  }
+
+  /**
+   * @covers ::create
+   * @covers ::doCreate
+   */
+  public function testCreateWithExplicitLanguage() {
+    $this->languageManager->expects($this->any())
+      ->method('getLanguage')
+      ->with('en')
+      ->willReturn(new Language(array('id' => 'en')));
+
+    $entity = $this->entityStorage->create(array('id' => 'foo', 'langcode' => 'en'));
+    $this->assertSame('en', $entity->language()->getId());
+  }
+
   /**
    * @covers ::save
    * @covers ::doSave