You are here

public function ImportForm::buildForm in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/locale/src/Form/ImportForm.php \Drupal\locale\Form\ImportForm::buildForm()

Form constructor for the translation import screen.

Overrides FormInterface::buildForm

File

core/modules/locale/src/Form/ImportForm.php, line 75
Contains \Drupal\locale\Form\ImportForm.

Class

ImportForm
Form constructor for the translation import screen.

Namespace

Drupal\locale\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $languages = $this->languageManager
    ->getLanguages();

  // Initialize a language list to the ones available, including English if we
  // are to translate Drupal to English as well.
  $existing_languages = array();
  foreach ($languages as $langcode => $language) {
    if (locale_is_translatable($langcode)) {
      $existing_languages[$langcode] = $language
        ->getName();
    }
  }

  // If we have no languages available, present the list of predefined
  // languages only. If we do have already added languages, set up two option
  // groups with the list of existing and then predefined languages.
  if (empty($existing_languages)) {
    $language_options = $this->languageManager
      ->getStandardLanguageListWithoutConfigured();
    $default = key($language_options);
  }
  else {
    $default = key($existing_languages);
    $language_options = array(
      (string) $this
        ->t('Existing languages') => $existing_languages,
      (string) $this
        ->t('Languages not yet added') => $this->languageManager
        ->getStandardLanguageListWithoutConfigured(),
    );
  }
  $validators = array(
    'file_validate_extensions' => array(
      'po',
    ),
    'file_validate_size' => array(
      file_upload_max_size(),
    ),
  );
  $form['file'] = array(
    '#type' => 'file',
    '#title' => $this
      ->t('Translation file'),
    '#description' => array(
      '#theme' => 'file_upload_help',
      '#description' => $this
        ->t('A Gettext Portable Object file.'),
      '#upload_validators' => $validators,
    ),
    '#size' => 50,
    '#upload_validators' => $validators,
    '#attributes' => array(
      'class' => array(
        'file-import-input',
      ),
    ),
  );
  $form['langcode'] = array(
    '#type' => 'select',
    '#title' => $this
      ->t('Language'),
    '#options' => $language_options,
    '#default_value' => $default,
    '#attributes' => array(
      'class' => array(
        'langcode-input',
      ),
    ),
  );
  $form['customized'] = array(
    '#title' => $this
      ->t('Treat imported strings as custom translations'),
    '#type' => 'checkbox',
  );
  $form['overwrite_options'] = array(
    '#type' => 'container',
    '#tree' => TRUE,
  );
  $form['overwrite_options']['not_customized'] = array(
    '#title' => $this
      ->t('Overwrite non-customized translations'),
    '#type' => 'checkbox',
    '#states' => array(
      'checked' => array(
        ':input[name="customized"]' => array(
          'checked' => TRUE,
        ),
      ),
    ),
  );
  $form['overwrite_options']['customized'] = array(
    '#title' => $this
      ->t('Overwrite existing customized translations'),
    '#type' => 'checkbox',
  );
  $form['actions'] = array(
    '#type' => 'actions',
  );
  $form['actions']['submit'] = array(
    '#type' => 'submit',
    '#value' => $this
      ->t('Import'),
  );
  return $form;
}