Index: modules/translation/translation.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/translation/translation.module,v
retrieving revision 1.23.2.4
diff -u -r1.23.2.4 translation.module
--- modules/translation/translation.module	14 Jan 2009 23:34:07 -0000	1.23.2.4
+++ modules/translation/translation.module	29 Aug 2009 14:48:06 -0000
@@ -163,7 +163,8 @@
     unset($translations[$node->language]);
     $languages = language_list();
     foreach ($languages as $langcode => $language) {
-      if (isset($translations[$langcode])) {
+      // Show links only if user have access to a published node type.
+      if (isset($translations[$langcode]) && ($translations[$langcode]->status || user_access('edit own '. $translations[$langcode]->$type .' content') || user_access('edit any '. $translations[$langcode]->$type .' content'))) {
         $links["node_translation_$langcode"] = array(
           'title' => $language->native,
           'href' => 'node/'. $translations[$langcode]->nid,
@@ -277,8 +278,8 @@
  *   The translation source nid of the translation set, the identifier
  *   of the node used to derive all translations in the set.
  * @return
- *   Array of partial node objects (nid, title, language) representing
- *   all nodes in the translation set, in effect all translations
+ *   Array of partial node objects (nid, type, title, status, language)
+ *   representing all nodes in the translation set, in effect all translations
  *   of node $tnid, including node $tnid itself. Because these are
  *   partial nodes, you need to node_load() the full node, if you
  *   need more properties. The array is indexed by language code.
@@ -289,7 +290,7 @@
   if (is_numeric($tnid) && $tnid) {
     if (!isset($translations[$tnid])) {
       $translations[$tnid] = array();
-      $result = db_query(db_rewrite_sql('SELECT n.nid, n.title, n.language FROM {node} n WHERE n.tnid = %d'), $tnid);
+      $result = db_query(db_rewrite_sql('SELECT n.nid, n.type, n.title, n.status, n.language FROM {node} n WHERE n.tnid = %d'), $tnid);
       while ($node = db_fetch_object($result)) {
         $translations[$tnid][$node->language] = $node;
       }
