diff --git a/custom_menu_active_trail.inc b/custom_menu_active_trail.inc
index 9fd8eb8..e4c8315 100644
--- a/custom_menu_active_trail.inc
+++ b/custom_menu_active_trail.inc
@@ -106,6 +106,7 @@ function __menu_block_set_menu_trail($menu_name = FALSE) {
  *   returned.
  */
 function _menu_link_get_preferred($path = NULL, $menu_name = '') {
+  global $language;
   $preferred_links = &drupal_static(__FUNCTION__);
 
   if (!isset($path)) {
@@ -150,20 +151,20 @@ function _menu_link_get_preferred($path = NULL, $menu_name = '') {
     $query->fields('m');
     $query->condition('ml.link_path', $path_candidates, 'IN');
 
-    // Sort candidates by link path and menu name.
+    // Sort candidates by language, link path and menu name.
     $candidates = array();
     foreach ($query->execute() as $candidate) {
       $candidate['weight'] = $candidate['link_weight'];
-      $candidates[$candidate['link_path']][$candidate['menu_name']] = $candidate;
+      $candidates[$candidate['language']][$candidate['link_path']][$candidate['menu_name']] = $candidate;
     }
 
     // Pick the most specific link, in the most preferred menu.
     $preferred_link = FALSE;
     foreach ($path_candidates as $link_path) {
-      if (isset($candidates[$link_path])) {
+      if (isset($candidates[$language->language][$link_path])) {
         foreach ($menu_names as $menu) {
-          if (!$preferred_links[$path][$menu] && isset($candidates[$link_path][$menu])) {
-            $candidate_item = $candidates[$link_path][$menu];
+          if (!$preferred_links[$path][$menu] && isset($candidates[$language->language][$link_path][$menu])) {
+            $candidate_item = $candidates[$language->language][$link_path][$menu];
             $map = explode('/', $path);
             _menu_translate($candidate_item, $map);
             if ($candidate_item['access']) {
