public SelectLanguageForm::buildForm(array $form, FormStateInterface $form_state, $install_state = NULL)
Form constructor.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
array The form structure.
Overrides FormInterface::buildForm
File
- core/lib/Drupal/Core/Installer/Form/SelectLanguageForm.php, line 29
Class
- SelectLanguageForm
- Provides the language selection form.
Namespace
Drupal\Core\Installer\Form
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 | public function buildForm( array $form , FormStateInterface $form_state , $install_state = NULL) { if ( count ( $install_state [ 'translations' ]) > 1) { $files = $install_state [ 'translations' ]; } else { $files = array (); } $standard_languages = LanguageManager::getStandardLanguageList(); $select_options = array (); $browser_options = array (); $form [ '#title' ] = 'Choose language' ; // Build a select list with language names in native language for the user // to choose from. And build a list of available languages for the browser // to select the language default from. // Select lists based on all standard languages. foreach ( $standard_languages as $langcode => $language_names ) { $select_options [ $langcode ] = $language_names [1]; $browser_options [ $langcode ] = $langcode ; } // Add languages based on language files in the translations directory. if ( count ( $files )) { foreach ( $files as $langcode => $uri ) { $select_options [ $langcode ] = isset( $standard_languages [ $langcode ]) ? $standard_languages [ $langcode ][1] : $langcode ; $browser_options [ $langcode ] = $langcode ; } } asort( $select_options ); $request = Request::createFromGlobals(); $browser_langcode = UserAgent::getBestMatchingLangcode( $request ->server->get( 'HTTP_ACCEPT_LANGUAGE' ), $browser_options ); $form [ 'langcode' ] = array ( '#type' => 'select' , '#title' => 'Choose language' , '#title_display' => 'invisible' , '#options' => $select_options , // Use the browser detected language as default or English if nothing found. '#default_value' => ! empty ( $browser_langcode ) ? $browser_langcode : 'en' , ); $link_to_english = install_full_redirect_url( array ( 'parameters' => array ( 'langcode' => 'en' ))); $form [ 'help' ] = array ( '#type' => 'item' , // #markup is XSS admin filtered which ensures unsafe protocols will be // removed from the url. '#markup' => '<p>Translations will be downloaded from the <a href="http://localize.drupal.org">Drupal Translation website</a>. If you do not want this, select <a href="' . $link_to_english . '">English</a>.</p>' , '#states' => array ( 'invisible' => array ( 'select[name="langcode"]' => array ( 'value' => 'en' ), ), ), ); $form [ 'actions' ] = array ( '#type' => 'actions' ); $form [ 'actions' ][ 'submit' ] = array ( '#type' => 'submit' , '#value' => 'Save and continue' , '#button_type' => 'primary' , ); return $form ; } |
Please login to continue.