Index: modules/translation/translation.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/translation/translation.module,v
retrieving revision 1.79
diff -u -p -r1.79 translation.module
--- modules/translation/translation.module	16 Apr 2010 13:52:23 -0000	1.79
+++ modules/translation/translation.module	20 Apr 2010 00:05:02 -0000
@@ -391,7 +391,7 @@ function translation_node_get_translatio
     if (!isset($translations[$tnid])) {
       $translations[$tnid] = array();
       $result = db_select('node', 'n')
-        ->fields('n', array('nid', 'title', 'language'))
+        ->fields('n', array('nid', 'type', 'uid', 'status', 'title', 'language'))
         ->condition('n.tnid', $tnid)
         ->addTag('node_access')
         ->execute();
@@ -442,8 +442,11 @@ function translation_path_get_translatio
  */
 function translation_language_switch_links_alter(array &$links, $type, $path) {
   if ($type == LANGUAGE_TYPE_INTERFACE && $paths = translation_path_get_translations($path)) {
+    $path = explode('/', $path);
+    $node = node_load($path[1]);
+    $translations = translation_node_get_translations($node->tnid);
     foreach ($links as $langcode => $link) {
-      if (isset($paths[$langcode])) {
+      if (isset($paths[$langcode]) && node_access('view', $translations[$langcode])) {
         // Translation in a different node.
         $links[$langcode]['href'] = $paths[$langcode];
       }
