diff --git a/i18n_menu/i18n_menu.module b/i18n_menu/i18n_menu.module
index 80f7793..7b09dd9 100644
--- a/i18n_menu/i18n_menu.module
+++ b/i18n_menu/i18n_menu.module
@@ -544,8 +544,8 @@ function i18n_menu_form_menu_edit_menu_alter(&$form, &$form_state) {
 function i18n_menu_form_menu_edit_item_alter(&$form, &$form_state) {
   $item = &$form['original_item']['#value'];
   $item['language'] = i18n_menu_item_get_language($item);
-  // Check whether this item belongs to a node object
-  $node_item = isset($item['router_path']) && $item['router_path'] == 'node/%';
+  // Check whether this item belongs to a node object and it is a supported type
+  $node_item = ($node = i18n_menu_item_get_node($item)) && i18n_menu_node_supported_type($node->type);
   if (!$node_item && i18n_menu_mode($item['menu_name'], I18N_MODE_TRANSLATE)) {
     //$form['i18n'] = array('#type' => 'fieldset');
     $form['i18n']['language'] = array(
@@ -664,27 +664,52 @@ function i18n_menu_item_get_language($item) {
 function i18n_menu_form_node_form_alter(&$form, &$form_state, $form_id) {
   if (isset($form['menu'])) {
     $node = $form['#node'];
-    $link = $form['#node']->menu;
+    $link = $node->menu;
     if (!empty($link['mlid'])) {
+      // Preserve the menu item language whaterver it is.
       $form['menu']['link']['language'] = array('#type' => 'value', '#value' => $link['language']);
     }
-    else {
-      // Set menu language to node language.
+    elseif (i18n_menu_node_supported_type($node->type)) {
+      // Set menu language to node language but only if it is a supported node type.
       $form['menu']['link']['language'] = array('#type' => 'value', '#value' => $node->language);
     }
+    else {
+      $form['menu']['link']['language'] = array('#type' => 'value', '#value' => LANGUAGE_NONE);
+    }
     // Customized must be set to 1 to save language.
     $form['menu']['link']['customized'] = array('#type' => 'value', '#value' => 1);
   }
 }
 
 /**
+ * Check whether a node type has multilingual support (but not entity translation)
+ */
+function i18n_menu_node_supported_type($type) {
+  $supported = &drupal_static(__FUNCTION__);
+  if (!isset($supported[$type])) {
+    $mode = variable_get('language_content_type_' . $type, 0);
+    $supported[$type] = $mode == 1 || $mode == 2; // 2 == TRANSLATION_ENABLED
+  }
+  return $supported[$type];
+}
+
+/**
+ * Get the node object for a menu item.
+ */
+function i18n_menu_item_get_node($item) {
+  return isset($item['router_path']) && $item['router_path'] == 'node/%' ? node_load(arg(1, $item['link_path'])) : NULL;
+}
+
+/**
  * Implements hook_node_presave()
  *
  * Set menu link language to node language
  */
 function i18n_menu_node_presave($node) {
-  if (!empty($node->menu) && isset($node->language)) {
+  if (!empty($node->menu) && isset($node->language) && i18n_menu_node_supported_type($node->type)) {
     $node->menu['language'] = i18n_object_langcode($node, LANGUAGE_NONE);
+    // Store node type with menu item so we can quickly access it later.
+    $node->menu['options']['node_type'] = $node->type;
   }
 }
 
