Index: translation.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/translation/translation.admin.inc,v
retrieving revision 1.6
diff -u -p -r1.6 translation.admin.inc
--- translation.admin.inc	19 Jan 2011 17:11:49 -0000	1.6
+++ translation.admin.inc	2 Feb 2011 23:34:14 -0000
@@ -284,6 +284,8 @@ function translation_edit_form($form, $f
     }
   }
 
+  $form['#validate'][] = 'translation_edit_form_validate';
+
   $form['actions'] = array('#type' => 'actions');
   $form['actions']['submit'] = array(
     '#type' => 'submit',
@@ -338,6 +340,34 @@ function translation_edit_form($form, $f
 }
 
 /**
+ * Validates translation form submit.
+ */
+function translation_edit_form_validate($form, &$form_state) {
+  $langcode = $form['#language'];
+
+  foreach ($form_state['values'] as $field_name => $field) {
+    if (isset($field[$langcode]) && is_array($field[$langcode])) {
+      foreach ($field[$langcode] as $key => $item) {
+        if (isset($item['fid']) && !empty($item['fid'])) {
+          translation_remove_empty($form_state['values'][$field_name][$langcode]);
+        }
+      }
+    }
+  }
+}
+
+/**
+ * Remove empty fields.
+ */
+function translation_remove_empty(&$field) {
+  foreach ($field as $delta => $value) {
+    if (!is_array($field[$delta]) || empty($field[$delta]['value'])) {
+      unset($field[$delta]);
+    }
+  }
+}
+
+/**
  * Helper callback: replace the source language with the given one.
  */
 function _translation_form_language(&$item, $key, $langcode) {
