update_language_list($flags = LanguageInterface::STATE_CONFIGURABLE)
Returns a list of languages set up on the site during upgrades.
Parameters
$flags: (optional) Specifies the state of the languages that have to be returned. It can be: LanguageInterface::STATE_CONFIGURABLE, LanguageInterface::STATE_LOCKED, or LanguageInterface::STATE_ALL.
Return value
\Drupal\Core\Language\LanguageInterface[] An associative array of languages, keyed by the language code, ordered by weight ascending and name ascending.
File
- core/includes/update.inc, line 703
- Drupal database update API.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | function update_language_list( $flags = LanguageInterface::STATE_CONFIGURABLE) { $languages = &drupal_static( __FUNCTION__ ); // Initialize master language list. if (!isset( $languages )) { // Initialize local language list cache. $languages = array (); // Fill in master language list based on current configuration. $default = \Drupal::languageManager()->getDefaultLanguage(); if (\Drupal::languageManager()->isMultilingual() || \Drupal::moduleHandler()->moduleExists( 'language' )) { // Use language module configuration if available. We can not use // entity_load_multiple() because this breaks during updates. $language_entities = \Drupal::configFactory()->listAll( 'language.entity.' ); // Initialize default property so callers have an easy reference and can // save the same object without data loss. foreach ( $language_entities as $langcode_config_name ) { $langcode = substr ( $langcode_config_name , strlen ( 'language.entity.' )); $info = \Drupal::config( $langcode_config_name )->get(); $languages [ $langcode ] = new Language( array ( 'default' => ( $info [ 'id' ] == $default ->getId()), 'name' => $info [ 'label' ], 'id' => $info [ 'id' ], 'direction' => $info [ 'direction' ], 'locked' => $info [ 'locked' ], 'weight' => $info [ 'weight' ], )); } Language::sort( $languages ); } else { // No language module, so use the default language only. $languages = array ( $default ->getId() => $default ); // Add the special languages, they will be filtered later if needed. $languages += \Drupal::languageManager()->getDefaultLockedLanguages( $default ->getWeight()); } } // 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 = \Drupal::languageManager()->getDefaultLanguage(); // Rename the default language. $default ->setName(t( "Site's default language (@lang_name)" , array ('@lang_name' => $default ->getName()))); $filtered_languages [LanguageInterface::LANGCODE_SITE_DEFAULT] = $default ; } foreach ( $languages as $langcode => $language ) { if (( $language ->isLocked() && !( $flags & LanguageInterface::STATE_LOCKED)) || (! $language ->isLocked() && !( $flags & LanguageInterface::STATE_CONFIGURABLE))) { continue ; } $filtered_languages [ $langcode ] = $language ; } return $filtered_languages ; } |
Please login to continue.