Index: pathologic.module
===================================================================
--- pathologic.module	(révision 6328)
+++ pathologic.module	(copie de travail)
@@ -125,20 +125,36 @@
   // Check if this is a menu item. If yes, we want to try to translate the path.
   if (menu_get_item($parts['path'])) {
     global $language;
+
+    $url = $matches[1] . '="' . url(
+      $parts['path'],
+      array(
+        'query' => $qparts,
+        'fragment' => isset($parts['fragment']) ? $parts['fragment'] : NULL,
+        'absolute' => $absolute,
+        'language' => $language,
+      )
+    ) . '"';
   }
   else {
-    $language = NULL;
+    // Do not call url() for file paths: we may end up with language prefix in our path.
+    global $base_url;
+
+    $base = $absolute ? $base_url .'/' : base_path();
+    
+    if ($parts['fragment']) {
+      $parts['fragment'] = '#'. $parts['fragment'];
+    }
+  
+    if ($qparts) {
+      $url = $matches[1] . '="' . $base . $matches[3] .'?'. $qparts . $parts['fragment'] . '"';
+    }
+    else {
+      $url = $matches[1] . '="' . $base . $matches[3] . $parts['fragment'] . '"';
+    }
   }
- 
-  return $matches[1] . '="' . url(
-    $parts['path'],
-    array(
-      'query' => $qparts,
-      'fragment' => isset($parts['fragment']) ? $parts['fragment'] : NULL,
-      'absolute' => $absolute,
-      'language' => $language,
-    )
-  ) . '"';
+  
+  return $url;
 }
 
 
