diff --git a/core/modules/language/language.module b/core/modules/language/language.module index 32d38eb..7b1a65c 100644 --- a/core/modules/language/language.module +++ b/core/modules/language/language.module @@ -223,6 +223,12 @@ function language_process_language_select($element) { $element['#options'][$langcode] = $language->locked ? t('- @name -', array('@name' => $language->name)) : $language->name; } } + // Add "Built-in English" language to the select when the default value is + // set to english but it does not exist in the options list. + if (isset($element['#default_value']) && $element['#default_value'] == 'en' && !isset($element['#options']['en'])) { + // Prepend the default language at the beginning of the list. + $element['#options'] = array('en' => t('Built-in English')) + $element['#options']; + } return $element; } diff --git a/core/modules/menu/lib/Drupal/menu/Tests/MenuLanguageTest.php b/core/modules/menu/lib/Drupal/menu/Tests/MenuLanguageTest.php index d2d3b48..10e38fe 100644 --- a/core/modules/menu/lib/Drupal/menu/Tests/MenuLanguageTest.php +++ b/core/modules/menu/lib/Drupal/menu/Tests/MenuLanguageTest.php @@ -7,6 +7,7 @@ namespace Drupal\menu\Tests; +use Drupal\Component\Utility\Unicode; use Drupal\Core\Language\Language; /** @@ -55,7 +56,7 @@ function setUp() { function testMenuLanguage() { // Create a test menu to test the various language-related settings. // Machine name has to be lowercase. - $menu_name = drupal_strtolower($this->randomName(16)); + $menu_name = Unicode::strtolower($this->randomName(16)); $label = $this->randomString(); $edit = array( 'id' => $menu_name, @@ -157,4 +158,36 @@ function testMenuLanguage() { $this->assertNoField('edit-langcode', 'The language selector field was hidden the page'); } + /** + * Tests menu configuration is still English after English has been deleted. + */ + function testMenuLanguageRemovedEnglish() { + // Create a test menu to test language settings. + // Machine name has to be lowercase. + $menu_name = Unicode::strtolower($this->randomName(16)); + $edit = array( + 'id' => $menu_name, + 'description' => '', + 'label' => $this->randomString(), + 'langcode' => 'en', + ); + $this->drupalPostForm('admin/structure/menu/add', $edit, t('Save')); + + // Check that the language settings were saved. + $menu = menu_load($menu_name); + $this->assertEqual($menu->langcode, 'en'); + + // Remove English language. To do that another language has to be set as + // default. + $language = language_load('aa'); + $language->default = TRUE; + language_save($language); + language_delete('en'); + + // Save the menu again and check if the language is still the same. + $this->drupalPostForm("admin/structure/menu/manage/$menu_name", array(), t('Save')); + $menu = menu_load($menu_name); + $this->assertEqual($menu->langcode, 'en'); + } + }