You are here

public function ImportForm::buildForm in Drupal 9

Same name and namespace in other branches
  1. 8 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 74

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 = [];
  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 = [
      (string) $this
        ->t('Existing languages') => $existing_languages,
      (string) $this
        ->t('Languages not yet added') => $this->languageManager
        ->getStandardLanguageListWithoutConfigured(),
    ];
  }
  $validators = [
    'file_validate_extensions' => [
      'po',
    ],
    'file_validate_size' => [
      Environment::getUploadMaxSize(),
    ],
  ];
  $form['file'] = [
    '#type' => 'file',
    '#title' => $this
      ->t('Translation file'),
    '#description' => [
      '#theme' => 'file_upload_help',
      '#description' => $this
        ->t('A Gettext Portable Object file.'),
      '#upload_validators' => $validators,
    ],
    '#size' => 50,
    '#upload_validators' => $validators,
    '#upload_location' => 'translations://',
    '#attributes' => [
      'class' => [
        'file-import-input',
      ],
    ],
  ];
  $form['langcode'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Language'),
    '#options' => $language_options,
    '#default_value' => $default,
    '#attributes' => [
      'class' => [
        'langcode-input',
      ],
    ],
  ];
  $form['customized'] = [
    '#title' => $this
      ->t('Treat imported strings as custom translations'),
    '#type' => 'checkbox',
  ];
  $form['overwrite_options'] = [
    '#type' => 'container',
    '#tree' => TRUE,
  ];
  $form['overwrite_options']['not_customized'] = [
    '#title' => $this
      ->t('Overwrite non-customized translations'),
    '#type' => 'checkbox',
    '#states' => [
      'checked' => [
        ':input[name="customized"]' => [
          'checked' => TRUE,
        ],
      ],
    ],
  ];
  $form['overwrite_options']['customized'] = [
    '#title' => $this
      ->t('Overwrite existing customized translations'),
    '#type' => 'checkbox',
  ];
  $form['actions'] = [
    '#type' => 'actions',
  ];
  $form['actions']['submit'] = [
    '#type' => 'submit',
    '#value' => $this
      ->t('Import'),
  ];
  return $form;
}