Index: module_grants.module
===================================================================
--- module_grants.module	(revision 275)
+++ module_grants.module	(working copy)
@@ -135,9 +135,22 @@
 
   $items['node/%node/revisions/%/revert']['access callback'] = 'module_grants_node_revision_access';
   $items['node/%node/revisions/%/revert']['access arguments'] = array('revert revisions', 1);
+
+  if (is_array($items['node/%node/translate'])) {
+    $items['node/%node/translate']['access callback'] = 'module_grants_translation_tab_access';
+  }
 }
 
 /**
+ * Similar to _translation_tab_access, but users module_grants_node_access instead of node_access.
+ * @param $node
+ *  The node for which the translation tab access is checked
+ */
+function module_grants_translation_tab_access($node) {
+  return !empty($node->language) && translation_supported_type($node->type) && module_grants_node_access('view', $node) && user_access('translate content');
+}
+
+/**
  * Similar to node_access() in node.module but ANDs rather than ORs grants
  * together on a per module base to create more natural behaviour.
  * Also makes sure that published and unpublished content are treated
