Index: modules/translation/translation.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/translation/translation.module,v
retrieving revision 1.37
diff -u -p -r1.37 translation.module
--- modules/translation/translation.module	16 Dec 2008 22:05:51 -0000	1.37
+++ modules/translation/translation.module	8 Jan 2009 17:23:56 -0000
@@ -196,8 +196,18 @@ function translation_nodeapi_prepare($no
         (user_access('translate content'))) {
       // We are translating a node from a source node, so
       // load the node to be translated and populate fields.
+      $source_node = node_load($source_nid);
+      // Ensure we don't have an existing translation in this language.
+      if (!empty($source_node->tnid)) {
+        $translations = translation_node_get_translations($source_node->tnid);
+        if (isset($translations[$language])) {
+          $languages = language_list();
+          drupal_set_message(t('A translation of %title in %language already exists.', array('%title' => $source_node->title, '%language' => $languages[$language]->name)), 'error');
+          return;
+        }
+      }
       $node->language = $language;
-      $node->translation_source = node_load($source_nid);
+      $node->translation_source = $source_node;
       $node->title = $node->translation_source->title;
       $node->body = $node->translation_source->body;
       // Let every module add custom translated fields.
