--- geoip_language.module.flawed	2011-07-15 19:03:21.499403221 +0200
+++ geoip_language.module	2011-07-15 19:03:33.071400985 +0200
@@ -139,6 +139,38 @@
   exit();
 }
 
+
+/**
+ * Implementation of hook_url_outbound alter().
+ * This is needed so other modules that use the functionality of 
+ * custom_url_rewrite_outbound() can be installed parallel to this one
+ */
+function geoip_language_url_outbound_alter(&$path, &$options, $original_path){
+  global $language;
+
+  if (variable_get('language_negotiation', LANGUAGE_NEGOTIATION_NONE) == GEOIP_LANGUAGE_NEGOTIATION_PATH
+    && ((int)variable_get('language_count', 1) > 1)) {
+    // Only modify relative (insite) URLs.
+    if (!$options['external']) {
+
+      // Allow links to bypass the language prefixing.  Helpful for simpletest.
+      // Breaking forms as of 2009-06-22
+//      if (isset($options['geoip_language_no_prefix']) && ($options['geoip_language_no_prefix'] === TRUE)) {
+//        return;
+//      }
+
+      // Language can be passed as an option, or we go for current language.
+      if (!isset($options['language'])) {
+        $options['language'] = $language;
+      }
+
+      if (!empty($options['language']->prefix)) {
+        $options['prefix'] = $options['language']->prefix .'/';
+      }
+    }
+  }
+}
+
 /**
  * Implementation of custom_url_rewrite_outbound().
  * language_url_rewrite() doesn't add the path prefix for the default language,
@@ -147,29 +179,7 @@
  */
 if (!function_exists('custom_url_rewrite_outbound')) {
   function custom_url_rewrite_outbound(&$path, &$options, $original_path) {
-    global $language;
-
-    if (variable_get('language_negotiation', LANGUAGE_NEGOTIATION_NONE) == GEOIP_LANGUAGE_NEGOTIATION_PATH
-      && ((int)variable_get('language_count', 1) > 1)) {
-      // Only modify relative (insite) URLs.
-      if (!$options['external']) {
-
-        // Allow links to bypass the language prefixing.  Helpful for simpletest.
-        // Breaking forms as of 2009-06-22
-//        if (isset($options['geoip_language_no_prefix']) && ($options['geoip_language_no_prefix'] === TRUE)) {
-//          return;
-//        }
-
-        // Language can be passed as an option, or we go for current language.
-        if (!isset($options['language'])) {
-          $options['language'] = $language;
-        }
-
-        if (!empty($options['language']->prefix)) {
-          $options['prefix'] = $options['language']->prefix .'/';
-        }
-      }
-    }
+    geoip_language_url_outbound_alter($path, $options, $original_path);
   }
 }
 
