Index: content_profile.module
===================================================================
--- content_profile.module	Wed Jan 07 12:58:06 2009
+++ content_profile.module	Tue Feb 03 17:06:13 2009
@@ -43,8 +43,7 @@
   }
   foreach (content_profile_get_types('names') as $type => $type_name) {
     $items['user/%user/profile/'. $type] = array(
-      'title callback' => 'check_plain',
-      'title' => drupal_ucfirst($type_name),
+      'title' => check_plain(drupal_ucfirst($type_name)),
       'page callback' => 'content_profile_page_edit',
       'page arguments' => array($type, 1),
       'access callback' => 'content_profile_page_access',
@@ -54,6 +53,19 @@
       'file path' => drupal_get_path('module', 'node'),
       'type' => content_profile_get_settings($type, 'edit_tab') == 'top' ? MENU_LOCAL_TASK : MENU_CALLBACK,
     );
+    if (module_exists('translation')) {
+      $items['user/%user/profile_translation/'. $type] = array(
+        'title' => 'Translate '. check_plain(drupal_ucfirst($type_name)),
+        'page callback' => 'content_profile_translation_node_overview',
+        'page arguments' => array($type, 1),
+        'access callback' => '_content_profile_translation_tab_access',
+        'access arguments' => array($type, 1),
+        'weight' => content_profile_get_settings($type, 'weight'),
+        'file' => 'translation.pages.inc',
+        'file path' => drupal_get_path('module', 'translation'),
+        'type' => content_profile_get_settings($type, 'edit_tab') == 'top' ? MENU_LOCAL_TASK : MENU_CALLBACK,
+      );
+    }
   }
   return $items;
 }
@@ -95,6 +107,31 @@
   }
   return drupal_get_form($type .'_node_form', $node);
 }
+
+/**
+ * Translates profile output to translation module overview page.
+ */
+function content_profile_translation_node_overview($type, $account) {
+  drupal_set_title(check_plain($account->name));
+  $node = content_profile_load($type, $account->uid);
+  if (!$node) {
+    $node = array('uid' => $account->uid, 'name' => (isset($account->name) ? $account->name : ''), 'type' => $type, 'language' => '');
+  }
+  return translation_node_overview($node);
+}
+
+/**
+ * Check translation access.
+ */
+function _content_profile_translation_tab_access($type, $account) {
+  $node = content_profile_load($type, $account->uid);
+  if (!$node) {
+    $node = array('uid' => $account->uid, 'name' => (isset($account->name) ? $account->name : ''), 'type' => $type, 'language' => '');
+  }
+  return _translation_tab_access($node);
+}
 
 
 /**
Index: content_profile.theme.inc
===================================================================
--- content_profile.theme.inc	(revision 210)
+++ content_profile.theme.inc	(working copy)
@@ -44,7 +44,7 @@
   $path = drupal_get_path('module', 'content_profile') .'/content_profile.css';
   drupal_add_css($path, 'module', 'all', FALSE);
 
-  $variables['title'] = check_plain(node_get_types('name', $node->type));
+  $variables['title'] = t(check_plain(node_get_types('name', $node->type)));
 
   $tabs = array();
   if ($element['#edit_link']) {
