--- modules/locale/locale.module.ori	Wed Sep 10 23:37:34 2008
+++ modules/locale/locale.module	Wed Sep 10 22:07:20 2008
@@ -575,10 +575,10 @@
   elseif ($op == 'view' && variable_get('language_count', 1) > 1 && variable_get('language_negotiation', LANGUAGE_NEGOTIATION_NONE) != LANGUAGE_NEGOTIATION_NONE) {
     $languages = language_list('enabled');
     $links = array();
-    
+    $path  = drupal_is_front_page() ? '<front>' : $_GET['q'];
     foreach ($languages[1] as $language) {
       $links[$language->language] = array(
-        'href'       => $_GET['q'],
+        'href'       => $path,
         'title'      => $language->native,
         'language'   => $language,
         'attributes' => array('class' => 'language-link'),
@@ -589,7 +589,7 @@
     // A translation link may need to point to a different path or use
     // a translated link text before going through l(), which will just
     // handle the path aliases.
-    drupal_alter('translation_link', $links, $_GET['q']);
+    drupal_alter('translation_link', $links, $path);
 
     $block['subject'] = t('Languages');
     $block['content'] = theme('links', $links, array());