Index: translation.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/translation/translation.admin.inc,v
retrieving revision 1.4
diff -u -p -r1.4 translation.admin.inc
--- translation.admin.inc	10 Dec 2010 17:01:18 -0000	1.4
+++ translation.admin.inc	21 Dec 2010 02:27:41 -0000
@@ -282,6 +282,8 @@ function translation_edit_form($form, $f
     }
   }
 
+  $form['#validate'][] = 'translation_edit_form_validate';
+
   $form['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Save translation'),
@@ -345,6 +347,34 @@ function _translation_form_language(&$it
 }
 
 /**
+ * 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]);
+    }
+  }
+}
+
+/**
  * Submit handler for the source language selector.
  */
 function translation_edit_form_source_language_submit($form, &$form_state) {
