1 locale.pages.inc locale_translate_edit_form_submit($form, &$form_state)

Process string editing form submissions.

Saves all translations of one string submitted from a form.

File

core/modules/locale/locale.pages.inc, line 368
Interface translation summary, editing and deletion user interfaces.

Code

function locale_translate_edit_form_submit($form, &$form_state) {
  require_once BACKDROP_ROOT . '/core/includes/locale.inc';

  $lid = $form_state['values']['lid'];
  foreach ($form_state['values']['translations'] as $key => $value) {
    $translation = db_query("SELECT translation FROM {locales_target} WHERE lid = :lid AND language = :language", array(':lid' => $lid, ':language' => $key))->fetchField();
    if (!empty($value)) {
      // Only update or insert if we have a value to use.
      if (is_string($translation)) {
        db_update('locales_target')
          ->fields(array(
            'translation' => $value,
          ))
          ->condition('lid', $lid)
          ->condition('language', $key)
          ->execute();
      }
      else {
        db_insert('locales_target')
          ->fields(array(
            'lid' => $lid,
            'translation' => $value,
            'language' => $key,
          ))
          ->execute();
      }
    }
    elseif (!empty($translation)) {
      // Empty translation entered: remove existing entry from database.
      db_delete('locales_target')
        ->condition('lid', $lid)
        ->condition('language', $key)
        ->execute();
    }

    // Force JavaScript translation file recreation for this language.
    _locale_invalidate_js($key);
  }

  backdrop_set_message(t('The string has been saved.'));

  // Clear locale cache.
  _locale_invalidate_js();
  cache()->deletePrefix('locale:');

  $form_state['redirect'] = 'admin/config/regional/translate/translate';
  return;
}