diff --git a/modules/translation/translation.module b/modules/translation/translation.module
index 3b95f18..9ee9bdc 100644
--- a/modules/translation/translation.module
+++ b/modules/translation/translation.module
@@ -427,9 +427,19 @@ function translation_supported_type($type) {
 function translation_path_get_translations($path) {
   $paths = array();
   // Check for a node related path, and for its translations.
-  if ((preg_match("!^node/([0-9]+)(/.+|)$!", $path, $matches)) && ($node = node_load((int)$matches[1])) && !empty($node->tnid)) {
-    foreach (translation_node_get_translations($node->tnid) as $language => $translation_node) {
-      $paths[$language] = 'node/' . $translation_node->nid . $matches[2];
+  if ((preg_match("!^node/([0-9]+)(/.+|)$!", $path, $matches)) && ($node = node_load((int)$matches[1]))) {
+    $translations = translation_node_get_translations($node->tnid);
+    if (!empty($translations)) {
+      foreach ($translations as $language => $translation_node) {
+        $paths[$language] = 'node/'. $translation_node->nid . $matches[2];
+      }
+    }
+    else {
+      if ($node->language != LANGUAGE_NONE) {
+        // If the current node has no translation but has a language assigned,
+        // return it.
+        $paths[$node->language] = 'node/'. $node->nid;
+      }
     }
   }
   return $paths;
@@ -447,10 +457,6 @@ function translation_language_switch_links_alter(array &$links, $type, $path) {
         // Translation in a different node.
         $links[$langcode]['href'] = $paths[$langcode];
       }
-      else {
-        // No translation in this language, or no permission to view.
-        unset($links[$langcode]);
-      }
     }
   }
 }
