Index: common.inc
===================================================================
--- common.inc	(revision 13)
+++ common.inc	(working copy)
@@ -1539,6 +1539,8 @@
  *   an HTML string containing a link to the given path.
  */
 function l($text, $path, $options = array()) {
+  global $language;
+
   // Merge in defaults.
   $options += array(
       'attributes' => array(),
@@ -1546,7 +1548,8 @@
     );
 
   // Append active class.
-  if ($path == $_GET['q'] || ($path == '<front>' && drupal_is_front_page())) {
+  if (($path == $_GET['q'] || ($path == '<front>' && drupal_is_front_page())) &&
+      (empty($options['language']) || $options['language']->language == $language->language)) {
     if (isset($options['attributes']['class'])) {
       $options['attributes']['class'] .= ' active';
     }
Index: theme.inc
===================================================================
--- theme.inc	(revision 13)
+++ theme.inc	(working copy)
@@ -1133,6 +1133,7 @@
  *   A string containing an unordered list of links.
  */
 function theme_links($links, $attributes = array('class' => 'links')) {
+  global $language;
   $output = '';
 
   if (count($links) > 0) {
@@ -1151,7 +1152,8 @@
       if ($i == $num_links) {
         $class .= ' last';
       }
-      if (isset($link['href']) && ($link['href'] == $_GET['q'] || ($link['href'] == '<front>' && drupal_is_front_page()))) {
+      if (isset($link['href']) && ($link['href'] == $_GET['q'] || ($link['href'] == '<front>' && drupal_is_front_page()))
+          && (empty($link['language']) || $link['language']->language == $language->language)) {
         $class .= ' active';
       }
       $output .= '<li'. drupal_attributes(array('class' => $class)) .'>';
