diff --git a/core/modules/language/language.module b/core/modules/language/language.module
index 40b9bfa..af71e2c 100644
--- a/core/modules/language/language.module
+++ b/core/modules/language/language.module
@@ -245,7 +245,7 @@ function language_get_default_configuration($entity_type, $bundle) {
  *   A string representing the bundle.
  */
 function language_clear_default_configuration($entity_type, $bundle) {
-  \Drupal::config('language.settings')->clear(language_get_default_configuration_settings_key($entity_type, $bundle))->save();
+  \Drupal::config('language.settings')->clear(language_get_default_configuration_bundle_key($entity_type, $bundle))->save();
 }
 
 /**
@@ -263,10 +263,26 @@ function language_clear_default_configuration($entity_type, $bundle) {
  *   The root name of the variables.
  */
 function language_get_default_configuration_settings_key($entity_type, $bundle) {
-  // Replace all the characters that are not letters, numbers or "_" with "_".
+  return language_get_default_configuration_bundle_key($entity_type, $bundle) . '.language.default_configuration';
+}
+
+/**
+ * Returns the bundle name part of variables used to store the configuration.
+ *
+ * Replace all the characters that are not letters, numbers or "_" with "_".
+ *
+ * @param string $entity_type
+ *   A string representing the entity type.
+ * @param string $bundle
+ *   A string representing the bundle.
+ *
+ * @return string
+ *   The bundle name part of the variables.
+ */
+function language_get_default_configuration_bundle_key($entity_type, $bundle) {
   $entity_type = preg_replace('/[^0-9a-zA-Z_]/', "_", $entity_type);
   $bundle = preg_replace('/[^0-9a-zA-Z_]/', "_", $bundle);
-  return 'entities.' . $entity_type . '.' . $bundle . '.language.default_configuration';
+  return 'entities.' . $entity_type . '.' . $bundle;
 }
 
 /**
@@ -277,6 +293,8 @@ function language_node_type_update(NodeTypeInterface $type) {
     language_save_default_configuration('node', $type->id(), language_get_default_configuration('node', $type->original->id()));
     language_clear_default_configuration('node', $type->original->id());
   }
+  // @todo On bundle create $element['#entity_information']['bundle'] is empty.
+  //   http://drupal.org/node/2015615
 }
 
 /**
@@ -388,6 +406,13 @@ function language_negotiation_url_prefixes_update() {
 }
 
 /**
+ * Implements hook_entity_bundle_delete().
+ */
+function language_entity_bundle_delete($entity_type, $bundle) {
+  language_clear_default_configuration($entity_type, $bundle);
+}
+
+/**
  * Saves language prefix settings.
  */
 function language_negotiation_url_prefixes_save(array $prefixes) {
diff --git a/core/modules/language/src/Tests/LanguageConfigurationElementTest.php b/core/modules/language/src/Tests/LanguageConfigurationElementTest.php
index 6815955..8702290 100644
--- a/core/modules/language/src/Tests/LanguageConfigurationElementTest.php
+++ b/core/modules/language/src/Tests/LanguageConfigurationElementTest.php
@@ -139,4 +139,36 @@ public function testNodeTypeUpdate() {
     $configuration = language_get_default_configuration('node', 'article_2');
     $this->assertEqual($configuration, array('langcode' => 'current_interface', 'language_show' => TRUE), 'The default language configuration has been kept on the new Article content type.');
   }
+
+  /**
+   * Tests the language setting are deleted from config file on bundle delete.
+   */
+  public function testLanguageConfigurationElementDelete() {
+    // Create the article content type first if the profile used is not the
+    // standard one.
+    if ($this->profile != 'standard') {
+      $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article'));
+    }
+    $admin_user = $this->drupalCreateUser(array('administer content types'));
+    $this->drupalLogin($admin_user);
+
+    // Create are language configuration for the articles.
+    $edit = array(
+      'language_configuration[langcode]' => 'current_interface',
+      'language_configuration[language_show]' => TRUE,
+    );
+    $this->drupalPostForm('admin/structure/types/manage/article', $edit, t('Save content type'));
+
+    // Check the language default configuration for the articles is present.
+    $configuration = \Drupal::config('language.settings')->get(language_get_default_configuration_settings_key('node', 'article'));
+    $this->assertNotNull($configuration, 'The language configuration is present.');
+
+    // Delete the articles bundle.
+    $this->drupalPostForm('admin/structure/types/manage/article/delete', array(), t('Delete'));
+
+    // Check that the language configuration have been deleted.
+    $configuration = \Drupal::config('language.settings')->get(language_get_default_configuration_settings_key('node', 'article'));
+    $this->assertNull($configuration, 'The language configuration were deleted after bundle were deleted.');
+  }
+
 }
