diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc index c31589c..596a47b 100644 --- a/core/includes/bootstrap.inc +++ b/core/includes/bootstrap.inc @@ -206,7 +206,6 @@ const LANGUAGE_MULTIPLE = 'mul'; /** * The language code used when referring to all languages. * - * @todo W3C uses this for 'Allar', need to find a better code. */ const LANGUAGE_ALL = 'all'; @@ -2660,15 +2659,15 @@ function language_multilingual() { /** * Returns a list of configured languages. * - * @param $flags - * (optional) A flag of LANGUAGE_ALL depending on the need for locked - * (special) languages in the returned list. + * @param $all + * (optional) A flag depending on the need for locked + * languages in the returned list. * * @return * An associative array of languages, keyed by the language code, ordered by * weight ascending and name ascending. */ -function language_list($flags = NULL) { +function language_list($all = FALSE) { $languages = &drupal_static(__FUNCTION__); @@ -2695,15 +2694,15 @@ function language_list($flags = NULL) { $languages = array($default->langcode => $default); } // Add the special languages, they will be filtered later if needed. - $languages += language_special_languages(); + $languages += language_locked_languages(); } - // Filter the full list of languages based on the criteria in $flags. By - // default we remove the disabled and locked languages, but the caller may - // request for those languages to be added as well. + // 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(); foreach ($languages as $langcode => $language) { - if ($language->locked && !($flags & LANGUAGE_ALL)) { + if ($language->locked && !$all) { continue; } $filtered_languages[$langcode] = $language; @@ -2713,36 +2712,37 @@ function language_list($flags = NULL) { } /** - * Returns a list with the special languages. + * Returns a list with the locked languages. + * + * @param int $weight + * An integer value that is used as the start value for the weights of the + * locked languages. * * @return * An array of language objects. */ -function language_special_languages() { +function language_locked_languages($weight = 20) { $locked_language = array( 'default' => FALSE, 'locked' => TRUE, 'enabled' => TRUE, ); - // The special languages should always have a big weight. - $weight = 20; $languages = array(); - $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; } @@ -2757,7 +2757,7 @@ function language_special_languages() { * A fully-populated language object or FALSE. */ function language_load($langcode) { - $languages = language_list(LANGUAGE_ALL); + $languages = language_list(TRUE); return isset($languages[$langcode]) ? $languages[$langcode] : FALSE; } @@ -2785,13 +2785,13 @@ function language_name($langcode) { } /** - * Checks if a language is not applicable. + * Checks if a language is locked. * * @param $langcode * The language code. */ -function language_not_applicable($langcode) { - return array_key_exists($langcode, language_special_languages()); +function language_is_locked($langcode) { + return array_key_exists($langcode, language_locked_languages()); } /** diff --git a/core/includes/update.inc b/core/includes/update.inc index a62b8ff..1dcb8e7 100644 --- a/core/includes/update.inc +++ b/core/includes/update.inc @@ -234,7 +234,7 @@ function update_prepare_d8_language() { ); db_add_field('language', 'locked', $locked_spec); - $languages = language_special_languages(); + $languages = language_locked_languages(); foreach ($languages as $language) { db_insert('language') ->fields(array( diff --git a/core/modules/block/block.admin.inc b/core/modules/block/block.admin.inc index aa018da..f5107c9 100644 --- a/core/modules/block/block.admin.inc +++ b/core/modules/block/block.admin.inc @@ -419,7 +419,7 @@ function block_admin_configure($form, &$form_state, $module, $delta) { } // Fetch languages. - $languages = language_list(LANGUAGE_ALL); + $languages = language_list(TRUE); foreach ($languages as $language) { // @TODO $language->name is not wrapped with t(), it should be replaced // by CMI translation implementation. diff --git a/core/modules/entity/lib/Drupal/entity/Entity.php b/core/modules/entity/lib/Drupal/entity/Entity.php index 3027b47..c0ebc12 100644 --- a/core/modules/entity/lib/Drupal/entity/Entity.php +++ b/core/modules/entity/lib/Drupal/entity/Entity.php @@ -207,7 +207,7 @@ class Entity implements EntityInterface { protected function getFieldLangcode($field, $langcode = NULL) { // Only apply the given langcode if the entity is language-specific. // Otherwise translatable fields are handled as non-translatable fields. - if (field_is_translatable($this->entityType, $field) && ($default_language = $this->language()) && !language_not_applicable($this->langcode)) { + if (field_is_translatable($this->entityType, $field) && ($default_language = $this->language()) && !language_is_locked($this->langcode)) { // For translatable fields the values in default language are stored using // the language code of the default language. return isset($langcode) ? $langcode : $default_language->langcode; diff --git a/core/modules/field/field.multilingual.inc b/core/modules/field/field.multilingual.inc index 778c015..aa97e6f 100644 --- a/core/modules/field/field.multilingual.inc +++ b/core/modules/field/field.multilingual.inc @@ -165,15 +165,11 @@ function _field_language_suggestion($available_langcodes, $langcode_suggestion, /** * Returns available content language codes. * - * The languages that may be associated to fields may include also the not - * applicable languges like LANGUAGE_NOT_SPECIFIED, LANGUAGE_NOT_APPLICABLE or - * LANGUAGE_MULTIPLE. - * * @return * An array of language codes. */ function field_content_languages() { - return array_keys(language_list(LANGUAGE_ALL)); + return array_keys(language_list(TRUE)); } /** @@ -291,7 +287,7 @@ function field_language($entity_type, $entity, $field_name = NULL, $langcode = N if (!isset($display_langcodes[$entity_type][$id][$langcode])) { $display_langcode = array(); - // By default, display language is set to one of the not applicable languages + // By default, display language is set to one of the locked languages // if the field translation is not available. It is up to translation // handlers to implement language fallback rules. foreach (field_info_instances($entity_type, $bundle) as $instance) { @@ -299,13 +295,13 @@ function field_language($entity_type, $entity, $field_name = NULL, $langcode = N $display_langcode[$instance['field_name']] = $langcode; } else { - // If the field has a value for one of the not applicable languages, - // then use that language for display. If not, the default one will be + // If the field has a value for one of the locked languages, then use + // that language for display. If not, the default one will be // LANGUAGE_NOT_SPECIFIED. $display_langcode[$instance['field_name']] = LANGUAGE_NOT_SPECIFIED; - foreach (language_special_languages() as $language_not_applicable) { - if (isset($entity->{$instance['field_name']}[$language_not_applicable->langcode])) { - $display_langcode[$instance['field_name']] = $language_not_applicable->langcode; + foreach (language_locked_languages() as $language_locked) { + if (isset($entity->{$instance['field_name']}[$language_locked->langcode])) { + $display_langcode[$instance['field_name']] = $language_locked->langcode; break; } } diff --git a/core/modules/field/lib/Drupal/field/Tests/TranslationTest.php b/core/modules/field/lib/Drupal/field/Tests/TranslationTest.php index a98f2ad..9e8c48b 100644 --- a/core/modules/field/lib/Drupal/field/Tests/TranslationTest.php +++ b/core/modules/field/lib/Drupal/field/Tests/TranslationTest.php @@ -263,9 +263,9 @@ class TranslationTest extends FieldTestBase { $enabled_langcodes = field_content_languages(); $langcodes = array(); - // This array is used to store, for each field name, which one of the not - // applicable languages will be used for display. - $not_applicable_languages = array(); + // This array is used to store, for each field name, which one of the locked + // languages will be used for display. + $locked_languages = array(); // Generate field translations for languages different from the first // enabled. @@ -280,14 +280,14 @@ class TranslationTest extends FieldTestBase { while (isset($langcodes[$langcode])); $langcodes[$langcode] = TRUE; $entity->{$field_name}[$langcode] = $this->_generateTestFieldValues($field['cardinality']); - // If the langcode is one of the not applicable languages, then that one + // If the langcode is one of the locked languages, then that one // will also be used for display. Otherwise, the default one should be // used, which is LANGUAGE_NOT_SPECIFIED. - if (language_not_applicable($langcode)) { - $not_applicable_languages[$field_name] = $langcode; + if (language_is_locked($langcode)) { + $locked_languages[$field_name] = $langcode; } else { - $not_applicable_languages[$field_name] = LANGUAGE_NOT_SPECIFIED; + $locked_languages[$field_name] = LANGUAGE_NOT_SPECIFIED; } } @@ -298,7 +298,7 @@ class TranslationTest extends FieldTestBase { $display_langcodes = field_language($entity_type, $entity, NULL, $requested_langcode); foreach ($instances as $instance) { $field_name = $instance['field_name']; - $this->assertTrue($display_langcodes[$field_name] == $not_applicable_languages[$field_name], t('The display language for field %field_name is %language.', array('%field_name' => $field_name, '%language' => $not_applicable_languages[$field_name]))); + $this->assertTrue($display_langcodes[$field_name] == $locked_languages[$field_name], t('The display language for field %field_name is %language.', array('%field_name' => $field_name, '%language' => $locked_languages[$field_name]))); } // Test multiple-fields display languages for translatable entities. diff --git a/core/modules/language/language.admin.inc b/core/modules/language/language.admin.inc index a601d00..b543971 100644 --- a/core/modules/language/language.admin.inc +++ b/core/modules/language/language.admin.inc @@ -12,7 +12,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; */ function language_admin_overview_form($form, &$form_state) { drupal_static_reset('language_list'); - $languages = language_list(LANGUAGE_ALL); + $languages = language_list(TRUE); $default = language_default(); $form['languages'] = array( @@ -164,7 +164,7 @@ function theme_language_admin_overview_form_table($variables) { * Process language overview form submissions, updating existing languages. */ function language_admin_overview_form_submit($form, &$form_state) { - $languages = language_list(LANGUAGE_ALL); + $languages = language_list(TRUE); $old_default = language_default(); foreach ($languages as $langcode => $language) { diff --git a/core/modules/language/language.install b/core/modules/language/language.install index 83c767d..1a1560b 100644 --- a/core/modules/language/language.install +++ b/core/modules/language/language.install @@ -15,7 +15,7 @@ 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_special_languages(); + $languages = language_locked_languages(); foreach ($languages as $language) { language_save($language); } diff --git a/core/modules/language/language.module b/core/modules/language/language.module index 46ba812..73f40dd 100644 --- a/core/modules/language/language.module +++ b/core/modules/language/language.module @@ -214,7 +214,7 @@ function language_save($language) { * TRUE if language is successfully deleted. Otherwise FALSE. */ function language_delete($langcode) { - $languages = language_list(LANGUAGE_ALL); + $languages = language_list(TRUE); if (isset($languages[$langcode]) && !$languages[$langcode]->locked) { $language = $languages[$langcode]; diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php index 2cdc393..7346bfc 100644 --- a/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php +++ b/core/modules/language/lib/Drupal/language/Tests/LanguageListTest.php @@ -99,8 +99,6 @@ class LanguageListTest extends WebTestBase { $this->drupalGet('admin/config/regional/language/delete/' . $langcode); // First test the 'cancel' link. $this->clickLink(t('Cancel')); - $langs = language_list(LANGUAGE_ALL); - debug($langs); $this->assertEqual($this->getUrl(), url('admin/config/regional/language', array('absolute' => TRUE)), t('Correct page redirection.')); $this->assertRaw($name, t('The language was not deleted.')); // Delete the language for real. This a confirm form, we do not need any diff --git a/core/modules/node/node.admin.inc b/core/modules/node/node.admin.inc index 1bb4547..1897c8b 100644 --- a/core/modules/node/node.admin.inc +++ b/core/modules/node/node.admin.inc @@ -106,7 +106,7 @@ function node_filters() { // Language filter if language support is present. if (language_multilingual()) { - $languages = language_list(LANGUAGE_ALL); + $languages = language_list(TRUE); foreach ($languages as $langcode => $language) { // Make locked languages appear special in the list. $language_options[$langcode] = $language->locked ? t('- @name -', array('@name' => $language->name)) : $language->name; @@ -476,7 +476,7 @@ function node_admin_nodes() { $nodes = node_load_multiple($nids); // Prepare the list of nodes. - $languages = language_list(LANGUAGE_ALL); + $languages = language_list(TRUE); $destination = drupal_get_destination(); $options = array(); foreach ($nodes as $node) { diff --git a/core/modules/node/node.module b/core/modules/node/node.module index 75a7417..03f4ea9 100644 --- a/core/modules/node/node.module +++ b/core/modules/node/node.module @@ -2658,7 +2658,7 @@ function node_form_search_form_alter(&$form, $form_state) { // Languages: $language_options = array(); - foreach (language_list(LANGUAGE_ALL) as $langcode => $language) { + foreach (language_list(TRUE) as $langcode => $language) { // Make locked languages appear special in the list. $language_options[$langcode] = $language->locked ? t('- @name -', array('@name' => $language->name)) : $language->name; } diff --git a/core/modules/node/node.pages.inc b/core/modules/node/node.pages.inc index 2e5ecee..b877893 100644 --- a/core/modules/node/node.pages.inc +++ b/core/modules/node/node.pages.inc @@ -187,7 +187,7 @@ function node_form($form, &$form_state, Node $node) { $form['#node'] = $node; if (variable_get('node_type_language_' . $node->type, 0) && module_exists('language')) { - $languages = language_list(LANGUAGE_ALL); + $languages = language_list(TRUE); $language_options = array(); foreach ($languages as $langcode => $language) { // Make locked languages appear special in the list. diff --git a/core/modules/system/lib/Drupal/system/Tests/Upgrade/LanguageUpgradePathTest.php b/core/modules/system/lib/Drupal/system/Tests/Upgrade/LanguageUpgradePathTest.php index 39e6982..5049ab1 100644 --- a/core/modules/system/lib/Drupal/system/Tests/Upgrade/LanguageUpgradePathTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Upgrade/LanguageUpgradePathTest.php @@ -40,7 +40,7 @@ class LanguageUpgradePathTest extends UpgradePathTestBase { // Ensure Catalan was properly upgraded to be the new default language. $this->assertTrue(language_default()->langcode == 'ca', t('Catalan is the default language')); - $languages = language_list(LANGUAGE_ALL); + $languages = language_list(TRUE); foreach ($languages as $language) { $this->assertTrue($language->default == ($language->langcode == 'ca'), t('@language default property properly set', array('@language' => $language->name))); } diff --git a/core/modules/translation/translation.module b/core/modules/translation/translation.module index 10cee0e..49ceea5 100644 --- a/core/modules/translation/translation.module +++ b/core/modules/translation/translation.module @@ -197,7 +197,7 @@ function translation_node_view(Node $node, $view_mode) { // If the site has no translations or is not multilingual we have no content // translation links to display. if (isset($node->tnid) && language_multilingual() && $translations = translation_node_get_translations($node->tnid)) { - $languages = language_list(LANGUAGE_ALL); + $languages = language_list(TRUE); // There might be a language provider enabled defining custom language // switch links which need to be taken into account while generating the @@ -210,8 +210,7 @@ function translation_node_view(Node $node, $view_mode) { $links = array(); foreach ($translations as $langcode => $translation) { - // Do not show links to the same node, to unpublished translations or to - // translations in disabled languages. + // Do not show links to the same node or to unpublished translations. if ($translation->status && isset($languages[$langcode]) && $langcode != $node->langcode) { $key = "translation_$langcode";