Index: menu_breadcrumb.module =================================================================== --- menu_breadcrumb.module (revision 403) +++ menu_breadcrumb.module (working copy) @@ -300,13 +300,17 @@ * Set the active menu according to the current path. */ function menu_breadcrumb_init() { + global $language; + $menu_lang_check = variable_get('menu_breadcrumb_determine_menu_language', 0); if (variable_get('menu_breadcrumb_determine_menu', 1)) { // Find the set of menus containing a link for the current page. $menu_item = menu_get_item(); - $result = db_query("SELECT mlid, menu_name FROM {menu_links} WHERE link_path = '%s'", $menu_item['href']); - $menu_link_menus = array(); + $result = db_query("SELECT mlid, menu_name, options FROM {menu_links} WHERE link_path = '%s'", $menu_item['href']); + $menu_link_menus = $menu_link_options = array(); while ($menu_link = db_fetch_array($result)) { + $temp_options = unserialize($menu_link['options']); $menu_link_menus[$menu_link['menu_name']] = TRUE; + $menu_link_options[$menu_link['menu_name']] = $temp_options['langcode']; } // Choose the highest-priority 'Enabled' menu. @@ -318,7 +322,15 @@ if ($is_pattern) { // Look for each of the $menu_link_menus in the pattern match cache. foreach (array_keys($menu_link_menus) as $menu_link_menu_name) { - if (array_key_exists($menu_link_menu_name, $match_cache) + if ($menu_lang_check + && array_key_exists($menu_link_menu_name, $match_cache) + && $match_cache[$menu_link_menu_name] == $menu_name + && $menu_link_options[$menu_link_menu_name] == $language->language) { + menu_set_active_menu_name($menu_link_menu_name); + break 2; + } + else if (!$menu_lang_check + && array_key_exists($menu_link_menu_name, $match_cache) && $match_cache[$menu_link_menu_name] == $menu_name) { menu_set_active_menu_name($menu_link_menu_name); break 2; @@ -326,10 +338,17 @@ } } else { - if (array_key_exists($menu_name, $menu_link_menus)) { + if ($menu_lang_check + && array_key_exists($menu_name, $menu_link_menus) + && $menu_link_options[$menu_name] == $language->language) { menu_set_active_menu_name($menu_name); break; } + else if (!$menu_lang_check && + array_key_exists($menu_name, $menu_link_menus)) { + menu_set_active_menu_name($menu_name); + break; + } } } } @@ -360,13 +379,26 @@ * The settings form used by Menu breadcrumb. */ function menu_breadcrumb_admin_settings_form() { - $form['menu_breadcrumb_determine_menu'] = array( + $form['menu_breadcrumb_determine_menu_fset'] = array( + '#type' => 'fieldset', + ); + + $form['menu_breadcrumb_determine_menu_fset']['menu_breadcrumb_determine_menu'] = array( '#type' => 'checkbox', '#title' => t('Use menu the page belongs to for the breadcrumb.'), '#description' => t('By default, Drupal 6 will use the Navigation menu for the breadcrumb. If you want to use the menu the active page belongs to for the breadcrumb, enable this option.'), '#default_value' => variable_get('menu_breadcrumb_determine_menu', 1), ); + $form['menu_breadcrumb_determine_menu_fset']['menu_breadcrumb_determine_menu_language'] = array( + '#type' => 'checkbox', + '#title' => t('Also take current language into account when determening the menu item.'), + '#description' => t('If you use a separate menu for each language, and you have activated the + Menu translation of i18n you can take the menu language into account. Each menu item must have a language set.'), + '#default_value' => variable_get('menu_breadcrumb_determine_menu_language', 0), + '#disabled' => !module_exists('i18nmenu'), + ); + $form['menu_breadcrumb_append_node_title'] = array( '#type' => 'checkbox', '#title' => t('Append page title to breadcrumb'),