Index: globalredirect.module
===================================================================
--- globalredirect.module	(revision 1149)
+++ globalredirect.module	(working copy)
@@ -126,7 +126,53 @@
         }
     }
 
-
+    // If Content Translation module is enabled then check the path is correct.
+    if (module_exists('translation') && (arg(0) == 'node') && is_numeric(arg(1)) && (arg(2) == '')) {
+      switch(variable_get('language_negotiation', LANGUAGE_NEGOTIATION_NONE)) {
+        case LANGUAGE_NEGOTIATION_PATH_DEFAULT:
+        case LANGUAGE_NEGOTIATION_PATH:
+          // Check if there's a translation for the current language of the requested node...
+          $node_translations = translation_path_get_translations('node/'. arg(1));
+          // If there is, go to the translation.
+          if (!empty($node_translations[$language->language]) && $node_translations[$language->language] != 'node/'. arg(1)) {
+            drupal_goto($node_translations[$language->language]);
+          }
+          // If there is no translation, change the language to fit the content!
+          else {
+            $node = node_load(arg(1));
+            if (!empty($node->language) && $node->language != $language->language) {
+              $all_languages = language_list();
+              // Change the global $language's prefix, to make drupal_goto()
+              // follow the proper prefix
+              $language = $all_languages[$node->language];
+              drupal_goto(drupal_get_path_alias('node/'. $node->nid));
+            }
+          }
+          break;
+          
+        case LANGUAGE_NEGOTIATION_DOMAIN:
+          // Let's check is there other languages on site.
+          $all_languages = language_list();
+          if (count($all_languages) > 1) {
+            foreach ($all_languages as $l => $lang) {
+              // Only test for languages other than the current one.
+              if ($lang->language != $language->language) { 
+                $alias = drupal_get_path_alias($request, $lang->language);
+                // yeah! we find it!
+                if ($alias != $request) {
+                  if (isset($lang->domain)) {
+                    drupal_goto($lang->domain.'/'.$alias, $query_string, NULL, 301);
+                  }
+                  break;
+                }
+              }
+            }
+          }
+          break;
+          
+      }
+    }
+    
     // Find an alias (if any) for the request
     $alias = drupal_get_path_alias($request, $options['language']->language);
     if (function_exists('custom_url_rewrite_outbound')) {
