function locale_translate_edit_form_submit

Process string editing form submissions.

Saves all translations of one string submitted from a form.

Related topics

File

modules/locale/locale.admin.inc, line 1191

Code

function locale_translate_edit_form_submit($form, &$form_state) {
    $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);
    }
    drupal_set_message(t('The string has been saved.'));
    // Clear locale cache.
    _locale_invalidate_js();
    cache_clear_all('locale:', 'cache', TRUE);
    $form_state['redirect'] = 'admin/config/regional/translate/translate';
    return;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.