diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc index dc4a3d43c3a6e88fb7cfc756cf26d9a7ffe6c2a5..fa1335b8f6d0bfe0ae0403f156b7ffd2136c9800 100644 --- a/core/includes/bootstrap.inc +++ b/core/includes/bootstrap.inc @@ -2691,9 +2691,9 @@ function language_list($all = FALSE) { else { // No language module, so use the default language only. $languages = array($default->langcode => $default); + // Add the special languages, they will be filtered later if needed. + $languages += language_locked_languages($default->weight); } - // Add the special languages, they will be filtered later if needed. - $languages += language_locked_languages(); } // Filter the full list of languages based on the value of the $all flag. By @@ -2720,7 +2720,7 @@ function language_list($all = FALSE) { * @return * An array of language objects. */ -function language_locked_languages($weight = 20) { +function language_locked_languages($weight = 0) { $locked_language = array( 'default' => FALSE, 'locked' => TRUE, @@ -2731,17 +2731,17 @@ function language_locked_languages($weight = 20) { $languages[LANGUAGE_NOT_SPECIFIED] = new Language(array( 'langcode' => LANGUAGE_NOT_SPECIFIED, 'name' => t('Not specified'), - 'weight' => $weight++, + 'weight' => ++$weight, ) + $locked_language); $languages[LANGUAGE_NOT_APPLICABLE] = new Language(array( 'langcode' => LANGUAGE_NOT_APPLICABLE, 'name' => t('Not applicable'), - 'weight' => $weight++, + 'weight' => ++$weight, ) + $locked_language); $languages[LANGUAGE_MULTIPLE] = new Language(array( 'langcode' => LANGUAGE_MULTIPLE, 'name' => t('Multiple'), - 'weight' => $weight++, + 'weight' => ++$weight, ) + $locked_language); return $languages; } diff --git a/core/includes/update.inc b/core/includes/update.inc index 1dcb8e7afa7a648abf85598b0302193cd55ddb1c..49df15b232b980b3eccad0c51106b5ac2e14901d 100644 --- a/core/includes/update.inc +++ b/core/includes/update.inc @@ -234,7 +234,8 @@ function update_prepare_d8_language() { ); db_add_field('language', 'locked', $locked_spec); - $languages = language_locked_languages(); + $max_language_weight = db_query('SELECT MAX(weight) FROM {language}')->fetchField(); + $languages = language_locked_languages($max_language_weight); foreach ($languages as $language) { db_insert('language') ->fields(array( diff --git a/core/modules/language/language.install b/core/modules/language/language.install index 1a1560bd3acb81e3d8639e7223318ced106f568c..b07753bc39826978c3c7c3b93f5a5f87c6f4c515 100644 --- a/core/modules/language/language.install +++ b/core/modules/language/language.install @@ -14,8 +14,8 @@ function language_install() { // Add the default language at first so that language_list() returns this in // language_special_languages(). - language_save(language_default()); - $languages = language_locked_languages(); + $default_language = language_save(language_default()); + $languages = language_locked_languages($default_language->weight); foreach ($languages as $language) { language_save($language); }