2012-02-21 4 views

Répondre

4

Malheureusement, il n'y a pas de fonction agréable dans le noyau. Vous pouvez vérifier le menu des paramètres régionaux, il fait en écrivant directement à la base de données:

function locale_translate_edit_form_submit($form, &$form_state) { 
    $lid = $form_state['values']['lid']; 
    foreach ($form_state['values']['translations'] as $key => $value) { 
    $translation = db_result(db_query("SELECT translation FROM {locales_target} WHERE lid = %d AND language = '%s'", $lid, $key)); 
    if (!empty($value)) { 
     // Only update or insert if we have a value to use. 
     if (!empty($translation)) { 
     db_query("UPDATE {locales_target} SET translation = '%s' WHERE lid = %d AND language = '%s'", $value, $lid, $key); 
     } 
     else { 
     db_query("INSERT INTO {locales_target} (lid, translation, language) VALUES (%d, '%s', '%s')", $lid, $value, $key); 
     } 
    } 
    elseif (!empty($translation)) { 
     // Empty translation entered: remove existing entry from database. 
     db_query("DELETE FROM {locales_target} WHERE lid = %d AND language = '%s'", $lid, $key); 
    } 

    // 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/build/translate/search'; 
    return; 
} 

Ne pas oublier la validation si votre texte provient d'une source non fiable (comme l'entrée d'utilisateur).