diff --git a/special_menu_items.module b/special_menu_items.module
index 16da1ae..8be77ed 100644
--- a/special_menu_items.module
+++ b/special_menu_items.module
@@ -87,46 +87,49 @@ function special_menu_itemsoverwrite_menu_item($link, $has_children, $menu = '',
  * overwriten menu_item_link function.
  */
 function special_menu_itemsoverwrite_menu_item_link($link) {
-  global $theme_key;
-  
-  $theme_overwrite = variable_get('oldtheme_menu_item_link', array());
-  
+  $theme_overwrite = variable_get('oldtheme_menu_item_link',null);
+
   if (empty($link['localized_options'])) {
     $link['localized_options'] = array();
   }
 
   if (strpos($link['href'], 'nolink') === 0) {
+
+    // Verify that i18n module is installed, otherwise skip check.
+    if (module_exists('i18n')) {
+      // Verify that the link is set for the current language.
+      if (i18n_get_lang() != $link['localized_options']['langcode'])
+        return;
+    }
+
     // Allow if the menu link is nolink:
     $link['localized_options']['html'] = TRUE;
 
-    //Retrieve tag for nolink menu item
-    $tag=variable_get('special_menu_items_nolink_tag','<span>');
+    //Retrieve tag for nolink menu item.
+    $tag=variable_get('special_menu_items_nolink_tag', '<span>');
 
     //Set class for nolink
     $css='nolink';
 
     //Return HTML span instead of a link
-    return render_menu_item($tag,$link['title'],$css);
+    return render_menu_item($tag, $link['title'], $css);
   }
   elseif (strpos($link['href'], 'separator') === 0) {
-    // Allow if the menu link is separator
+    // Allow if the menu link is separator.
     $link['localized_options']['html'] = TRUE;
 
-    //Retrieve tags and value for separator menu item
-    $tag=variable_get('special_menu_items_separator_tag','<span>');
-    $value=variable_get('special_menu_items_separator_value','<hr>');
+    //Retrieve tags and value for separator menu item.
+    $tag=variable_get('special_menu_items_separator_tag', '<span>');
+    $value=variable_get('special_menu_items_separator_value', '--------');
 
     //Set class for separator
     $css='separator';
 
     //Return separator menu item
-    return render_menu_item($tag,$value,$css);
-  }
-  elseif (array_key_exists($theme_key, $theme_overwrite) && function_exists($theme_overwrite[$theme_key])) {
-    return call_user_func($theme_overwrite[$theme_key], $link);
+    return render_menu_item($tag, $value, $css);
   }
   else {
-    theme_menu_item_link($link);
+    return call_user_func($theme_overwrite, $link);
   }
 }
 
@@ -167,7 +170,7 @@ function special_menu_items_theme_registry_alter(&$theme_registry) {
   $theme_overwrite = variable_get('oldtheme_menu_item_link', array());
   // Save previous value from registry in case another theme overwrites menu_item_link
   $theme_overwrite[$theme_key] = $theme_registry['menu_item_link']['function'];
-  
+
   //Store the value
   variable_set('oldtheme_menu_item_link', $theme_overwrite);
 
