diff --git a/core/modules/locale/lib/Drupal/locale/Form/ImportForm.php b/core/modules/locale/lib/Drupal/locale/Form/ImportForm.php new file mode 100644 index 0000000..c896fcf --- /dev/null +++ b/core/modules/locale/lib/Drupal/locale/Form/ImportForm.php @@ -0,0 +1,176 @@ + $language) { + if ($langcode != 'en' || locale_translate_english()) { + $existing_languages[$langcode] = $language->name; + } + } + + // 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. + form_load_include($form_state, 'inc', 'language', 'language.admin'); + if (empty($existing_languages)) { + $language_options = language_admin_predefined_list(); + $default = key($language_options); + } + else { + $default = key($existing_languages); + $language_options = array( + t('Existing languages') => $existing_languages, + t('Languages not yet added') => language_admin_predefined_list() + ); + } + + $validators = array( + 'file_validate_extensions' => array('po'), + 'file_validate_size' => array(file_upload_max_size()), + ); + $form['file'] = array( + '#type' => 'file', + '#title' => t('Translation file'), + '#description' => theme('file_upload_help', array('description' => t('A Gettext Portable Object file.'), 'upload_validators' => $validators)), + '#size' => 50, + '#upload_validators' => $validators, + '#attributes' => array('class' => array('file-import-input')), + '#attached' => array( + 'js' => array( + drupal_get_path('module', 'locale') . '/locale.bulk.js' => array(), + ), + ), + ); + $form['langcode'] = array( + '#type' => 'select', + '#title' => t('Language'), + '#options' => $language_options, + '#default_value' => $default, + '#attributes' => array('class' => array('langcode-input')), + ); + + $form['customized'] = array( + '#title' => t('Treat imported strings as custom translations'), + '#type' => 'checkbox', + ); + $form['overwrite_options'] = array( + '#type' => 'container', + '#tree' => TRUE, + ); + $form['overwrite_options']['not_customized'] = array( + '#title' => t('Overwrite non-customized translations'), + '#type' => 'checkbox', + '#states' => array( + 'checked' => array( + ':input[name="customized"]' => array('checked' => TRUE), + ), + ), + ); + $form['overwrite_options']['customized'] = array( + '#title' => t('Overwrite existing customized translations'), + '#type' => 'checkbox', + ); + + $form['actions'] = array( + '#type' => 'actions' + ); + $form['actions']['submit'] = array( + '#type' => 'submit', + '#value' => t('Import') + ); + return $form; + } + + /** + * {@inheritdoc} + */ + public function validateForm(array &$form, array &$form_state) { + } + + /** + * {@inheritdoc} + */ + public function submitForm(array &$form, array &$form_state) { + // Ensure we have the file uploaded. + if ($file = file_save_upload('file', $form['file']['#upload_validators'], 'translations://', 0)) { + + // Add language, if not yet supported. + $language = language_load($form_state['values']['langcode']); + if (empty($language)) { + $language = new Language(array( + 'langcode' => $form_state['values']['langcode'] + )); + $language = language_save($language); + drupal_set_message(t('The language %language has been created and can now be used.', array('%language' => $language->name))); + } + $options = array( + 'langcode' => $form_state['values']['langcode'], + 'overwrite_options' => $form_state['values']['overwrite_options'], + 'customized' => $form_state['values']['customized'] ? LOCALE_CUSTOMIZED : LOCALE_NOT_CUSTOMIZED, + ); + \Drupal::moduleHandler()->loadInclude('locale', 'bulk.inc'); + $file = locale_translate_file_attach_properties($file, $options); + $batch = locale_translate_batch_build(array($file->uri => $file), $options); + batch_set($batch); + } + else { + form_set_error('file', t('File to import not found.')); + $form_state['rebuild'] = TRUE; + return; + } + + $form_state['redirect'] = 'admin/config/regional/translate'; + return; + } +} diff --git a/core/modules/locale/locale.bulk.inc b/core/modules/locale/locale.bulk.inc index 5173132..f75e9ad 100644 --- a/core/modules/locale/locale.bulk.inc +++ b/core/modules/locale/locale.bulk.inc @@ -12,133 +12,6 @@ /** - * Form constructor for the translation import screen. - * - * @see locale_translate_import_form_submit() - * @ingroup forms - */ -function locale_translate_import_form($form, &$form_state) { - drupal_static_reset('language_list'); - $languages = language_list(); - - // 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 ($langcode != 'en' || locale_translate_english()) { - $existing_languages[$langcode] = $language->name; - } - } - - // 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. - form_load_include($form_state, 'inc', 'language', 'language.admin'); - if (empty($existing_languages)) { - $language_options = language_admin_predefined_list(); - $default = key($language_options); - } - else { - $default = key($existing_languages); - $language_options = array( - t('Existing languages') => $existing_languages, - t('Languages not yet added') => language_admin_predefined_list() - ); - } - - $validators = array( - 'file_validate_extensions' => array('po'), - 'file_validate_size' => array(file_upload_max_size()), - ); - $form['file'] = array( - '#type' => 'file', - '#title' => t('Translation file'), - '#description' => theme('file_upload_help', array('description' => t('A Gettext Portable Object file.'), 'upload_validators' => $validators)), - '#size' => 50, - '#upload_validators' => $validators, - '#attributes' => array('class' => array('file-import-input')), - '#attached' => array( - 'js' => array( - drupal_get_path('module', 'locale') . '/locale.bulk.js' => array(), - ), - ), - ); - $form['langcode'] = array( - '#type' => 'select', - '#title' => t('Language'), - '#options' => $language_options, - '#default_value' => $default, - '#attributes' => array('class' => array('langcode-input')), - ); - - $form['customized'] = array( - '#title' => t('Treat imported strings as custom translations'), - '#type' => 'checkbox', - ); - $form['overwrite_options'] = array( - '#type' => 'container', - '#tree' => TRUE, - ); - $form['overwrite_options']['not_customized'] = array( - '#title' => t('Overwrite non-customized translations'), - '#type' => 'checkbox', - '#states' => array( - 'checked' => array( - ':input[name="customized"]' => array('checked' => TRUE), - ), - ), - ); - $form['overwrite_options']['customized'] = array( - '#title' => t('Overwrite existing customized translations'), - '#type' => 'checkbox', - ); - - $form['actions'] = array( - '#type' => 'actions' - ); - $form['actions']['submit'] = array( - '#type' => 'submit', - '#value' => t('Import') - ); - return $form; -} - -/** - * Form submission handler for locale_translate_import_form(). - */ -function locale_translate_import_form_submit($form, &$form_state) { - // Ensure we have the file uploaded. - if ($file = file_save_upload('file', $form['file']['#upload_validators'], 'translations://', 0)) { - - // Add language, if not yet supported. - $language = language_load($form_state['values']['langcode']); - if (empty($language)) { - $language = new Language(array( - 'langcode' => $form_state['values']['langcode'] - )); - $language = language_save($language); - drupal_set_message(t('The language %language has been created.', array('%language' => t($language->name)))); - } - $options = array( - 'langcode' => $form_state['values']['langcode'], - 'overwrite_options' => $form_state['values']['overwrite_options'], - 'customized' => $form_state['values']['customized'] ? LOCALE_CUSTOMIZED : LOCALE_NOT_CUSTOMIZED, - ); - $file = locale_translate_file_attach_properties($file, $options); - $batch = locale_translate_batch_build(array($file->uri => $file), $options); - batch_set($batch); - } - else { - form_set_error('file', t('File to import not found.')); - $form_state['rebuild'] = TRUE; - return; - } - - $form_state['redirect'] = 'admin/config/regional/translate'; - return; -} - -/** * Form constructor for the Gettext translation files export form. * * @see locale_translate_export_form_submit() diff --git a/core/modules/locale/locale.module b/core/modules/locale/locale.module index 75e0a22..02e6526 100644 --- a/core/modules/locale/locale.module +++ b/core/modules/locale/locale.module @@ -198,12 +198,9 @@ function locale_menu() { ); $items['admin/config/regional/translate/import'] = array( 'title' => 'Import', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('locale_translate_import_form'), - 'access arguments' => array('translate interface'), + 'route_name' => 'locale_translate_import', 'weight' => 20, 'type' => MENU_LOCAL_TASK, - 'file' => 'locale.bulk.inc', ); $items['admin/config/regional/translate/export'] = array( 'title' => 'Export', diff --git a/core/modules/locale/locale.routing.yml b/core/modules/locale/locale.routing.yml index a2a5820..3809bb2 100644 --- a/core/modules/locale/locale.routing.yml +++ b/core/modules/locale/locale.routing.yml @@ -4,3 +4,10 @@ locale_settings: _form: 'Drupal\locale\Form\LocaleSettingsForm' requirements: _permission: 'translate interface' + +locale_translate_import: + pattern: 'admin/config/regional/translate/import' + defaults: + _form: 'Drupal\locale\Form\ImportForm' + requirements: + _permission: 'translate interface'