Index: menu.inc =================================================================== --- menu.inc (revision 181) +++ menu.inc (working copy) @@ -867,11 +867,12 @@ */ function menu_tree_page_data($menu_name = 'navigation') { static $tree = array(); + global $language; // Load the menu item corresponding to the current page. if ($item = menu_get_item()) { // Generate a cache ID (cid) specific for this page. - $cid = 'links:'. $menu_name .':page-cid:'. $item['href'] .':'. (int)$item['access']; + $cid = 'language:'. $language->language .':links:'. $menu_name .':page-cid:'. $item['href'] .':'. (int)$item['access']; if (!isset($tree[$cid])) { // If the static variable doesn't have the data, check {cache_menu}. @@ -895,7 +896,18 @@ $args[] = ''; $placeholders .= ", '%s'"; } - $parents = db_fetch_array(db_query("SELECT p1, p2, p3, p4, p5, p6, p7, p8 FROM {menu_links} WHERE menu_name = '%s' AND link_path IN (". $placeholders .")", $args)); + $res = db_query("SELECT p1, p2, p3, p4, p5, p6, p7, p8, options FROM {menu_links} WHERE menu_name = '%s' AND link_path IN (". $placeholders .")", $args); + $parents = array(); + while ($menu_data = db_fetch_array($res)) { + $options = unserialize($menu_data['options']); + if (($options['langcode'] == $language->language)) { + $parents = $menu_data; + break; + } elseif (empty($parents)) { + $parents = $menu_data; + } + } + unset($parents['options']); if (empty($parents)) { // If no link exists, we may be on a local task that's not in the links.