diff --git a/core/lib/Drupal/Core/Language/LanguageManager.php b/core/lib/Drupal/Core/Language/LanguageManager.php
index 6fe99d6..90a76ca 100644
--- a/core/lib/Drupal/Core/Language/LanguageManager.php
+++ b/core/lib/Drupal/Core/Language/LanguageManager.php
@@ -141,25 +141,7 @@ public function getLanguages($flags = LanguageInterface::STATE_CONFIGURABLE) {
     // Filter the full list of languages based on the value of the $all flag. By
     // default we remove the locked languages, but the caller may request for
     // those languages to be added as well.
-    $filtered_languages = array();
-
-    // Add the site's default language if flagged as allowed value.
-    if ($flags & LanguageInterface::STATE_SITE_DEFAULT) {
-      $default = isset($default) ? $default : $this->getDefaultLanguage();
-      // Rename the default language. But we do not want to do this globally,
-      // if we're acting on a global object, so clone the object first.
-      $default = clone $default;
-      $default->name = $this->t("Site's default language (@lang_name)", array('@lang_name' => $default->name));
-      $filtered_languages[LanguageInterface::LANGCODE_SITE_DEFAULT] = $default;
-    }
-
-    foreach ($this->languages as $id => $language) {
-      if (($language->isLocked() && ($flags & LanguageInterface::STATE_LOCKED)) || (!$language->isLocked() && ($flags & LanguageInterface::STATE_CONFIGURABLE))) {
-        $filtered_languages[$id] = $language;
-      }
-    }
-
-    return $filtered_languages;
+    return $this->languageFilter($this->languages, $flags);
   }
 
   /**
@@ -383,4 +365,41 @@ public function getConfigOverrideLanguage() {
     return $this->getCurrentLanguage();
   }
 
+
+  /**
+   * Filters the full list of languages based on the value of the flag.
+   *
+   * By default removes the locked languages.
+   *
+   * @param array $languages
+   *    Array with languages to be filtered.
+   *
+   * @param int $flags
+   *   (optional) Specifies the state of the languages that have to be returned.
+   *   It can be: LanguageInterface::STATE_CONFIGURABLE,
+   *   LanguageInterface::STATE_LOCKED, LanguageInterface::STATE_ALL.
+   *
+   * @return array
+   *   An associative array of languages, keyed by the language code.
+   */
+  protected function languageFilter(array $languages, $flags = LanguageInterface::STATE_CONFIGURABLE) {
+    $filtered_languages = array();
+    // Add the site's default language if flagged as allowed value.
+    if ($flags & LanguageInterface::STATE_SITE_DEFAULT) {
+      $default = isset($default) ? $default : $this->getDefaultLanguage();
+      // Rename the default language. But we do not want to do this globally,
+      // if we're acting on a global object, so clone the object first.
+      $default = clone $default;
+      $default->name = $this->t("Site's default language (@lang_name)", array('@lang_name' => $default->name));
+      $filtered_languages[LanguageInterface::STATE_SITE_DEFAULT] = $default;
+    }
+
+    foreach ($languages as $id => $language) {
+      if (($language->isLocked() && ($flags & LanguageInterface::STATE_LOCKED)) || (!$language->isLocked() && ($flags & LanguageInterface::STATE_CONFIGURABLE))) {
+        $filtered_languages[$id] = $language;
+      }
+    }
+
+    return $filtered_languages;
+  }
 }
diff --git a/core/modules/language/src/ConfigurableLanguageManager.php b/core/modules/language/src/ConfigurableLanguageManager.php
index dbb68d2..6f5bf1b 100644
--- a/core/modules/language/src/ConfigurableLanguageManager.php
+++ b/core/modules/language/src/ConfigurableLanguageManager.php
@@ -278,37 +278,35 @@ public function setNegotiator(LanguageNegotiatorInterface $negotiator) {
    * {@inheritdoc}
    */
   public function getLanguages($flags = LanguageInterface::STATE_CONFIGURABLE) {
-    if (!isset($this->languages)) {
-      // Prepopulate the language list with the default language to keep things
-      // working even if we have no configuration.
-      $default = $this->getDefaultLanguage();
-      $this->languages = array($default->id => $default);
-
-      // Retrieve the list of languages defined in configuration.
-      $prefix = 'language.entity.';
-      $config_ids = $this->configFactory->listAll($prefix);
-
-      // Instantiate languages from config objects.
-      $weight = 0;
-      foreach ($this->configFactory->loadMultiple($config_ids) as $config) {
-        $data = $config->get();
-        $langcode = $data['id'];
-        // Initialize default property so callers have an easy reference and can
-        // save the same object without data loss.
-        $data['default'] = ($langcode == $default->id);
-        $data['name'] = $data['label'];
-        $this->languages[$langcode] = new Language($data);
-        $weight = max(array($weight, $this->languages[$langcode]->getWeight()));
-      }
+    // Prepopulate the language list with the default language to keep things
+    // working even if we have no configuration.
+    $default = $this->getDefaultLanguage();
+    $languages = array($default->id => $default);
 
-      // Add locked languages, they will be filtered later if needed.
-      $this->languages += $this->getDefaultLockedLanguages($weight);
+    // Retrieve the list of languages defined in configuration.
+    $prefix = 'language.entity.';
+    $config_ids = $this->configFactory->listAll($prefix);
 
-      // Sort the language list by weight then title.
-      Language::sort($this->languages);
+    // Instantiate languages from config objects.
+    $weight = 0;
+    foreach ($this->configFactory->loadMultiple($config_ids) as $config) {
+      $data = $config->get();
+      $langcode = $data['id'];
+      // Initialize default property so callers have an easy reference and can
+      // save the same object without data loss.
+      $data['default'] = ($langcode == $default->id);
+      $data['name'] = $data['label'];
+      $languages[$langcode] = new Language($data);
+      $weight = max(array($weight, $languages[$langcode]->getWeight()));
     }
 
-    return parent::getLanguages($flags);
+    // Add locked languages, they will be filtered later if needed.
+    $languages += $this->getDefaultLockedLanguages($weight);
+
+    // Sort the language list by weight then title.
+    Language::sort($languages);
+
+    return $this->languageFilter($languages, $flags);
   }
 
   /**
diff --git a/core/modules/language/src/Tests/LanguageSelectorTranslatableTest.php b/core/modules/language/src/Tests/LanguageSelectorTranslatableTest.php
new file mode 100644
index 0000000..23d3756
--- /dev/null
+++ b/core/modules/language/src/Tests/LanguageSelectorTranslatableTest.php
@@ -0,0 +1,80 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\language\Tests\LanguageSelectorTranslatableTest.
+ */
+
+namespace Drupal\language\Tests;
+
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * Tests the Content translation settings language selector options.
+ *
+ * @group language
+ */
+class LanguageSelectorTranslatableTest extends WebTestBase {
+
+  public static $modules = array(
+    'language',
+    'content_translation',
+    'config_translation',
+    'node',
+    'comment',
+    'field_ui',
+    'entity_test',
+    'locale',
+  );
+
+  public $administrator;
+
+  protected function setUp() {
+    parent::setUp();
+
+    // Create user and set permissions.
+    $this->administrator = $this->drupalCreateUser($this->getAdministratorPermissions(), 'administrator');
+    $this->drupalLogin($this->administrator);
+
+  }
+  /**
+   * Returns an array of permissions needed for the translator.
+   */
+  protected function getAdministratorPermissions() {
+    return array_filter(
+      array('translate interface',
+            'administer content translation',
+            'create content translations',
+            'update content translations',
+            'delete content translations',
+            'administer languages'
+      )
+    );
+  }
+
+  /**
+   * Test Content Translation language selectors are correctly translate.
+   */
+  public function testLanguageStringSelector() {
+    // Add another language.
+    $edit = array('predefined_langcode' => 'es');
+    $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
+
+    // Translate the string English in Spanish (Inglés). Override config entity.
+    $name_translation = 'Inglés';
+    $override = \Drupal::languageManager()->getLanguageConfigOverride('es', 'language.entity.en')->set('label', $name_translation)->save();
+
+    // Check label is set correctly.
+    $this->assertEqual($override->get('label'), $name_translation, 'Language label for English is translated into Spanish.');
+
+    // Check content translation overview selector.
+    $path = 'es/admin/config/regional/content-language';
+    $this->drupalGet($path);
+
+    // Get en language from selector.
+    $elements = $this->xpath('//select[@id=:id]//option[@value=:option]', array(':id' => 'edit-settings-node-node-settings-language-langcode', ':option' => 'en'));
+
+    // Check the language text is translated.
+    $this->assertEqual((string) $elements[0], $name_translation, 'Checking the option string English is translated to Spanish.');
+  }
+}
