Index: i18nmenu_node.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/i18nmenu_node/i18nmenu_node.module,v
retrieving revision 1.9
diff -u -p -r1.9 i18nmenu_node.module
--- i18nmenu_node.module	30 Jul 2010 15:35:43 -0000	1.9
+++ i18nmenu_node.module	9 Sep 2010 15:07:32 -0000
@@ -243,6 +243,11 @@ function i18nmenu_node_form_alter(&$form
     $node = $form['#node'];
     $translation_support = translation_supported_type($node->type);
 
+    // Since menu item language always matches node language, we need to reset
+    // it to 'All languages' if node translation is enabled. Therefore we need a
+    // separate submit handler that is executed unconditionally.
+    $form['#submit'][] = 'i18nmenu_node_form_node_language_submit';
+
     $node_translation_form = array(
       '#type' => 'checkbox',
       '#title' => t('Enable translations'),
@@ -315,11 +320,27 @@ function _i18nmenu_node_get_source_tnid(
  */
 function i18nmenu_node_form_node_submit($form, &$form_state) {
   $values =& $form_state['values'];
+  // Record status changes (to be used on node save).
   $values['status_changed'] = $form['#node']->status != $values['status'];
+  // Save title translation.
   if (!empty($form['#tnode']->menu['link_title']) && !empty($values['menu']['link_title_translation'])) {
     i18nstrings_save_translation($values['language'], $form['#tnode']->menu['link_title'], $values['menu']['link_title_translation'], 'menu');
   }
 }
+
+/**
+ * Submit handler for the node form.
+ *
+ * Ensure that the menu item language is always set to 'All languages' if node
+ * translation is enabled.
+ */
+function i18nmenu_node_form_node_language_submit($form, &$form_state) {
+  $item = &$form_state['values']['menu'];
+  if (!empty($item['i18nmenu_node_translation'])) {
+    unset($item['language']);
+    unset($item['options']['langcode']);
+  }
+}
 
 /**
  * Implementation of hook_nodeapi().
@@ -494,31 +515,3 @@ function i18nmenu_node_get_translations(
     return $result;
   }
 }
-
-
-/**
- * @todo Backward compatibility code.
- * To be removed as soon as Internationalization 1.6 is released.
- */
-
-/**
- * Helper function: load the menu item associated to the current node.
- */
-if (!function_exists('_i18nmenu_node_prepare')) {
-  function _i18nmenu_node_prepare($node) {
-    module_invoke('menu', 'nodeapi', $node, 'prepare');
-  }
-}
-
-/**
- * Helper function.
- */
-if (!function_exists('_i18nmenu_get_item_title')) {
-  function _i18nmenu_get_item_title($link, $update = FALSE, $langcode = NULL) {
-    $key = 'menu:item:'. $link['mlid'] .':title';
-    if ($update) {
-      i18nstrings_update($key, $link['link_title']);
-    }
-    return i18nstrings($key, $link['link_title'], $langcode);
-  }
-}
