--- taxonomy_menu.database.inc.orig	2010-07-15 10:42:02.000000000 +0100
+++ taxonomy_menu.database.inc	2010-07-15 11:20:57.000000000 +0100
@@ -10,7 +10,13 @@
  * @author Mark Theunissen    <http://drupal.org/user/108606>
  * @author Afief Halumi       <http://drupal.org/user/237472>
  */
-
+/** language patch - requires this SQL change
+    ALTER TABLE `taxonomy_menu` ADD `language` VARCHAR( 12 ) NOT NULL ;
+**/
+function _taxonomy_menu_get_language() {
+  global $language;
+  return $language->language;
+}
  /**
  *  helper function to insert a menu item
  *
@@ -19,7 +25,8 @@
  * @param $vid
  */
 function _taxonomy_menu_insert_menu_item($mlid, $tid, $vid) {
-  db_query('INSERT INTO {taxonomy_menu} (mlid, tid, vid) VALUES (%d, %d, %d)', $mlid, $tid, $vid);
+  db_query('INSERT INTO {taxonomy_menu} (mlid, tid, vid, language)
+    VALUES (%d, %d, %d, \'%s\')', $mlid, $tid, $vid, _taxonomy_menu_get_language());
 }
 
 /**
@@ -29,7 +36,8 @@
  *   the term's id
  */
 function _taxonomy_menu_get_mlid($tid, $vid) {
-  return db_result(db_query('SELECT mlid FROM {taxonomy_menu} WHERE tid = %d AND vid = %d', $tid, $vid));
+  return db_result(db_query('SELECT mlid FROM {taxonomy_menu} WHERE tid = %d AND vid = %d
+    AND language=\'%s\'', $tid, $vid, _taxonomy_menu_get_language()));
 }
 
 /**
@@ -42,7 +50,8 @@
  */
 function _taxonomy_menu_get_menu_items($vid) {
 
-  $result = db_query('SELECT mlid, tid FROM {taxonomy_menu} WHERE vid = %d', $vid);
+  $result = db_query('SELECT mlid, tid FROM {taxonomy_menu} WHERE vid = %d
+    AND language=\'%s\'', $vid, _taxonomy_menu_get_language());
   $menu_items = array();
   while ($data = db_fetch_object($result)) {
     $menu_items[$data->tid] = $data->mlid;
@@ -61,9 +70,11 @@
   $menu_terms = _taxonomy_menu_get_menu_items($vid);
   if (!empty($menu_terms)) {
     foreach ($menu_terms as $tid => $mlid) {
-      db_query('DELETE FROM {menu_links} WHERE mlid = %d', $mlid);
+      db_query('DELETE FROM {menu_links} WHERE mlid = %d',
+        $mlid);
     }
-    db_query('DELETE FROM {taxonomy_menu} WHERE vid = %d', $vid);
+    db_query('DELETE FROM {taxonomy_menu} WHERE vid = %d AND language=\'%s\'',
+      $vid, _taxonomy_menu_get_language());
   }
 }
 
@@ -104,7 +115,8 @@
   * @param $tid
   */
 function _taxonomy_menu_delete_item($vid, $tid) {
-  db_query('DELETE FROM {taxonomy_menu} WHERE vid = %d AND tid = %d', $vid, $tid);
+  db_query('DELETE FROM {taxonomy_menu} WHERE vid = %d AND tid = %d
+    AND language=\'%s\'', $vid, $tid, _taxonomy_menu_get_language());
 }
 
 /**
@@ -138,7 +150,8 @@
  * @return $tid
  */
 function _taxonomy_menu_get_tid($mlid) {
-  return db_result(db_query('SELECT tid FROM {taxonomy_menu} WHERE mlid = %d', $mlid));
+  return db_result(db_query('SELECT tid FROM {taxonomy_menu} WHERE mlid = %d
+    AND language=\'%s\'', $mlid, _taxonomy_menu_get_language()));
 }
 
 /**
@@ -148,7 +161,8 @@
  * @return array of vid, tid
  */
 function _taxonomy_menu_get_item($mlid) {
-  return db_fetch_array(db_query('SELECT tid, vid FROM {taxonomy_menu} WHERE mlid = %d', $mlid));
+  return db_fetch_array(db_query('SELECT tid, vid FROM {taxonomy_menu}
+    WHERE mlid = %d AND language=\'%s\'', $mlid, _taxonomy_menu_get_language()));
 }
 
 /**
