diff --git a/core/modules/language/src/Form/ContentLanguageSettingsForm.php b/core/modules/language/src/Form/ContentLanguageSettingsForm.php
index ebbf0fd..56b632a 100644
--- a/core/modules/language/src/Form/ContentLanguageSettingsForm.php
+++ b/core/modules/language/src/Form/ContentLanguageSettingsForm.php
@@ -7,9 +7,10 @@
 
 namespace Drupal\language\Form;
 
+use Drupal\Core\Config\ConfigFactory;
 use Drupal\Core\Entity\ContentEntityTypeInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
-use Drupal\Core\Form\FormBase;
+use Drupal\Core\Form\ConfigFormBase;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\language\Entity\ContentLanguageSettings;
 use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -17,7 +18,7 @@
 /**
  * Configure the content language settings for this site.
  */
-class ContentLanguageSettingsForm extends FormBase {
+class ContentLanguageSettingsForm extends ConfigFormBase {
 
   /**
    * The entity manager.
@@ -29,10 +30,14 @@ class ContentLanguageSettingsForm extends FormBase {
   /**
    * Constructs a ContentLanguageSettingsForm object.
    *
+   * @param \Drupal\Core\Config\ConfigFactory $config_factory
+   *   The config factory.
    * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
    *   The entity manager.
    */
-  public function __construct(EntityManagerInterface $entity_manager) {
+  public function __construct(ConfigFactory $config_factory, EntityManagerInterface $entity_manager) {
+    parent::__construct($config_factory);
+
     $this->entityManager = $entity_manager;
   }
 
@@ -41,6 +46,7 @@ public function __construct(EntityManagerInterface $entity_manager) {
    */
   public static function create(ContainerInterface $container) {
     return new static(
+      $container->get('config.factory'),
       $container->get('entity.manager')
     );
   }
@@ -62,7 +68,7 @@ public function buildForm(array $form, FormStateInterface $form_state) {
 
     $bundles = $this->entityManager->getAllBundleInfo();
     $language_configuration = array();
-    foreach ($entity_types as $entity_type_id => $entity_type) {
+    foreach ($this->entityManager->getDefinitions() as $entity_type_id => $entity_type) {
       if (!$entity_type instanceof ContentEntityTypeInterface || !$entity_type->hasKey('langcode')) {
         continue;
       }
@@ -159,4 +165,10 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
     drupal_set_message($this->t('Settings successfully updated.'));
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  protected function getEditableConfigNames() {
+    return ['language.settings'];
+  }
 }
diff --git a/core/tests/Drupal/Tests/Core/Form/AccessibilityTest.php b/core/tests/Drupal/Tests/Core/Form/AccessibilityTest.php
new file mode 100644
index 0000000..a200df6
--- /dev/null
+++ b/core/tests/Drupal/Tests/Core/Form/AccessibilityTest.php
@@ -0,0 +1,97 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Tests\Core\Form\AccessibilityTest.
+ */
+
+namespace Drupal\Tests\Core\Form;
+
+use Drupal\Core\Extension\ExtensionDiscovery;
+use Drupal\simpletest\WebTestBase;
+
+
+/**
+ * Performs basic accessibility tests for all forms provided by extensions.
+ *
+ * To save some processing power, this test only scans for forms in the
+ * Drupal\$extension\Form namespace of all modules.
+ *
+ * @coversDefaultClass \Drupal\Core\Form\Accessibility
+ * @group Form
+ */
+class AccessibilityTest extends WebTestBase {
+
+  /**
+   * The module installer.
+   *
+   * @var \Drupal\Core\Extension\ModuleInstallerInterface
+   */
+  protected $moduleInstaller;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setUp() {
+    parent::setUp();
+    $this->moduleInstaller = $this->container->get('module_installer');
+  }
+
+  /**
+   * Performs accessibility tests on all forms provided by modules.
+   */
+  public function testFormAccessibility() {
+
+    // Scan all modules for forms.
+    $forms = array();
+    $scanner = new ExtensionDiscovery(array(drupal_get_profile()));
+    $modules = $scanner->scan('module');
+    foreach ($modules as $module_file) {
+      $module_name = $module_file->getName();
+      $directory = $module_file->getPath() . "/src/Form";
+      if (is_dir($directory)) {
+        $files = array_diff(scandir($directory), array('.', '..'));
+        foreach ($files as $file) {
+          $class = "Drupal\\$module_name\\Form\\" . basename($file, '.php');
+          if (is_subclass_of($class, 'Drupal\Core\Form\FormInterface')) {
+            $forms[$module_name][] = $class;
+          }
+        }
+      }
+    }
+
+    // Perform tests on all forms.
+    foreach ($forms as $module_name => $module_forms) {
+      $this->moduleInstaller->install(array($module_name));
+
+      foreach ($module_forms as $form_class) {
+        $this->doTestFormElementTitle($form_class);
+      }
+    }
+  }
+
+  /**
+   * Tests that all form elements of a form have a title.
+   *
+   * @param string $class
+   *   The class name of the form.
+   */
+  public function doTestFormElementTitle($class) {
+    // @todo Entity form controllers need an entity to be constructed
+    //   properly.
+    if (is_subclass_of($class, 'Drupal\Core\Entity\EntityFormControllerInterface')) {
+      $this->verbose("Skipping class '$class' because entity forms cannot be instantiated generically.");
+      return;
+    }
+    // Some forms throw exceptions if the arguments passed into
+    // FormInterface::buildForm() are missing or incorrect.
+    try {
+      $form = \Drupal::formBuilder()->getForm($class);
+    }
+    catch (\Exception $e) {
+      $this->verbose("Skipping class '$class' because it threw an exception during form building.");
+      return;
+    }
+  }
+
+}
\ No newline at end of file
