diff --git a/entity/tmgmt.entity.job_item.inc b/entity/tmgmt.entity.job_item.inc
index 666e03e..9cecaa4 100644
--- a/entity/tmgmt.entity.job_item.inc
+++ b/entity/tmgmt.entity.job_item.inc
@@ -206,6 +206,19 @@ class TMGMTJobItem extends Entity {
   }
 
   /**
+   * Returns the user readable type of job item.
+   *
+   * @param string
+   *   A type that describes the job item.
+   */
+  public function getSourceType() {
+    if ($controller = $this->getSourceController()) {
+      return $controller->getType($this);
+    }
+    return ucfirst($this->item_type);
+  }
+
+  /**
    * Loads the job entity that this job item is attached to.
    *
    * @return TMGMTJob
@@ -267,7 +280,7 @@ class TMGMTJobItem extends Entity {
    * @return array
    *   A structured data array.
    */
-  public function getData(array $key = array(), $index = null) {
+  public function getData(array $key = array(), $index = NULL) {
     if (empty($this->data)) {
       // Load the data from the source if it has not been set yet.
       $this->data = $this->getSourceData();
diff --git a/plugin/tmgmt.plugin.interface.source.inc b/plugin/tmgmt.plugin.interface.source.inc
index 5326477..aa76c2d 100644
--- a/plugin/tmgmt.plugin.interface.source.inc
+++ b/plugin/tmgmt.plugin.interface.source.inc
@@ -64,4 +64,15 @@ interface TMGMTSourcePluginControllerInterface extends TMGMTPluginBaseInterface
    */
   public function getItemTypeLabel($type);
 
+  /**
+   * Returns the type of a job item.
+   *
+   * @param TMGMTJobItem $job_item
+   *   The job item.
+   *
+   * @return string
+   *   A type that describes the job item.
+   */
+  public function getType(TMGMTJobItem $job_item);
+
 }
diff --git a/plugin/tmgmt.plugin.source.inc b/plugin/tmgmt.plugin.source.inc
index 028d77a..342cd73 100644
--- a/plugin/tmgmt.plugin.source.inc
+++ b/plugin/tmgmt.plugin.source.inc
@@ -47,4 +47,12 @@ abstract class TMGMTDefaultSourcePluginController extends TMGMTPluginBase implem
     return '';
   }
 
+  /**
+   * Implements TMGMTSourcePluginControllerInterface::getType().
+   */
+  public function getType(TMGMTJobItem $job_item) {
+    return ucfirst($job_item->item_type);
+  }
+
+
 }
diff --git a/sources/entity/tmgmt_entity.plugin.inc b/sources/entity/tmgmt_entity.plugin.inc
index 2cbcce1..6d0b039 100644
--- a/sources/entity/tmgmt_entity.plugin.inc
+++ b/sources/entity/tmgmt_entity.plugin.inc
@@ -60,4 +60,26 @@ class TMGMTEntitySourcePluginController extends TMGMTDefaultSourcePluginControll
     $job_item->accepted();
   }
 
+  /**
+   * Implements TMGMTEntitySourcePluginControllerInterface::getType().
+   */
+  public function getType(TMGMTJobItem $job_item) {
+    if ($entity = entity_load_single($job_item->item_type, $job_item->item_id)) {
+      $bundles = tmgmt_entity_get_translatable_bundles($job_item->item_type);
+      $info = entity_get_info($job_item->item_type);
+      list(, , $bundle) = entity_extract_ids($job_item->item_type, $entity);
+      // Display entity type and label if we have one and the bundle isn't
+      // the same as the entity type.
+      if (isset($bundles[$bundle]) && $bundle != $job_item->item_type) {
+        return t('@type (@bundle)', array('@type' => $info['label'], '@bundle' => $bundles[$bundle]));
+      }
+      // Otherwise just display the entity type label.
+      elseif (isset($info['label'])) {
+        return $info['label'];
+      }
+      return parent::getType($job_item);
+    }
+  }
+
+
 }
diff --git a/sources/entity/tmgmt_entity.source.test b/sources/entity/tmgmt_entity.source.test
index ecf18f7..3db881b 100644
--- a/sources/entity/tmgmt_entity.source.test
+++ b/sources/entity/tmgmt_entity.source.test
@@ -41,7 +41,7 @@ class TMGMTEntitySourceTestCase extends TMGMTEntityTestCaseUtility {
   function testEntitySourceNode() {
     $this->setEnvironment('de');
 
-    $this->createNodeType('article', st('Article'), ENTITY_TRANSLATION_ENABLED);
+    $this->createNodeType('article', 'Article', ENTITY_TRANSLATION_ENABLED);
 
     // Create a translation job.
     $job = $this->createJob();
@@ -53,7 +53,8 @@ class TMGMTEntitySourceTestCase extends TMGMTEntityTestCaseUtility {
     for ($i = 1; $i <= 5; $i++) {
       $node = $this->createNode('article');
       // Create a job item for this node and add it to the job.
-      $job->addItem('entity', 'node', $node->nid);
+      $item = $job->addItem('entity', 'node', $node->nid);
+      $this->assertEqual(t('@type (@bundle)', array('@type' => t('Content'), '@bundle' => 'Article')), $item->getSourceType());
     }
 
     // Translate the job.
@@ -88,7 +89,8 @@ class TMGMTEntitySourceTestCase extends TMGMTEntityTestCaseUtility {
     for ($i = 1; $i <= 5; $i++) {
       $term = $this->createTaxonomyTerm($this->vocabulary);
       // Create the item and assign it to the job.
-      $job->addItem('entity', 'taxonomy_term', $term->tid);
+      $item = $job->addItem('entity', 'taxonomy_term', $term->tid);
+      $this->assertEqual(t('@type (@bundle)', array('@type' => t('Term'), '@bundle' => $this->vocabulary->name)), $item->getSourceType());
     }
     // Request the translation and accept it.
     $job->requestTranslation();
diff --git a/sources/i18n_string/tmgmt_i18n_string.plugin.inc b/sources/i18n_string/tmgmt_i18n_string.plugin.inc
index fed0ba7..e983b55 100644
--- a/sources/i18n_string/tmgmt_i18n_string.plugin.inc
+++ b/sources/i18n_string/tmgmt_i18n_string.plugin.inc
@@ -72,6 +72,25 @@ class TMGMTI18nStringSourcePluginController extends TMGMTDefaultSourcePluginCont
   }
 
   /**
+   * Implements TMGMTEntitySourcePluginControllerInterface::getType().
+   */
+  public function getType(TMGMTJobItem $job_item) {
+    $identifiers = $this->getI18nObjectIdentifiers($job_item);
+    // @todo: Improve this, use item_type?
+    if ($label = $this->getItemTypeLabel($identifiers['textgroup'])) {
+      return $label;
+    }
+    if ($label = $this->getItemTypeLabel($identifiers['textgroup'] . '_' . $identifiers['type'])) {
+      return $label;
+    }
+    if ($label = $this->getItemTypeLabel($identifiers['type'])) {
+      return $label;
+    }
+    return parent::getType($job_item);
+  }
+
+
+  /**
    * Helper function to get i18n_object_wrapper for given job item.
    *
    * This is critical part that does not work for all i18n string types.
diff --git a/sources/i18n_string/tmgmt_i18n_string.test b/sources/i18n_string/tmgmt_i18n_string.test
index 2fa54fb..9340cb7 100644
--- a/sources/i18n_string/tmgmt_i18n_string.test
+++ b/sources/i18n_string/tmgmt_i18n_string.test
@@ -46,6 +46,7 @@ class TMGMTI18nStringSourceTestCase extends TMGMTBaseTestCase {
     $job->save();
 
     $item1 = $job->addItem('i18n_string', 'i18n_string', $string_object_name);
+    $this->assertEqual(t('Vocabulary'), $item1->getSourceType());
     $job->requestTranslation();
 
     foreach ($job->getItems() as $item) {
@@ -79,6 +80,7 @@ class TMGMTI18nStringSourceTestCase extends TMGMTBaseTestCase {
     $job->save();
 
     $item1 = $job->addItem('i18n_string', 'i18n_string', $string_object_name);
+    $this->assertEqual(t('Term'), $item1->getSourceType());
     $job->requestTranslation();
 
     foreach ($job->getItems() as $item) {
@@ -97,7 +99,7 @@ class TMGMTI18nStringSourceTestCase extends TMGMTBaseTestCase {
 
   }
 
-  function NtestI18nStringSourceMenu() {
+  function testI18nStringSourceMenu() {
     // Enabling this here as enabling it with tmgmt_ui results in missing views
     // handlers errors. Not sure why, but this way it at least works.
     module_enable(array('i18n_menu'));
@@ -122,6 +124,7 @@ class TMGMTI18nStringSourceTestCase extends TMGMTBaseTestCase {
     $job->settings = array();
 
     $item1 = $job->addItem('i18n_string', 'i18n_string', $string_name);
+    $this->assertEqual(t('Menu'), $item1->getSourceType());
     $job->requestTranslation();
     foreach ($job->getItems() as $item) {
       /* @var $item TMGMTJobItem */
@@ -157,6 +160,7 @@ class TMGMTI18nStringSourceTestCase extends TMGMTBaseTestCase {
     $job->settings = array();
 
     $item1 = $job->addItem('i18n_string', 'i18n_string', $string_name);
+    $this->assertEqual(t('Menu link'), $item1->getSourceType());
     $job->requestTranslation();
     foreach ($job->getItems() as $item) {
       /* @var $item TMGMTJobItem */
diff --git a/sources/node/tmgmt_node.plugin.inc b/sources/node/tmgmt_node.plugin.inc
index 2adba3c..8dab306 100644
--- a/sources/node/tmgmt_node.plugin.inc
+++ b/sources/node/tmgmt_node.plugin.inc
@@ -87,4 +87,15 @@ class TMGMTNodeSourcePluginController extends TMGMTDefaultSourcePluginController
     return parent::getUri($job_item);
   }
 
+  /**
+   * Implements TMGMTEntitySourcePluginControllerInterface::getType().
+   */
+  public function getType(TMGMTJobItem $job_item) {
+    if ($node = node_load($job_item->item_id)) {
+      return node_type_get_name($node);
+    }
+    return parent::getType($job_item);
+  }
+
+
 }
diff --git a/sources/node/tmgmt_node.test b/sources/node/tmgmt_node.test
index aa05de2..bbd3314 100644
--- a/sources/node/tmgmt_node.test
+++ b/sources/node/tmgmt_node.test
@@ -27,7 +27,7 @@ class TMGMTNodeSourceTestCase extends TMGMTEntityTestCaseUtility {
     parent::setUp(array('tmgmt_node', 'translation'));
     $this->loginAsAdmin();
     $this->setEnvironment('de');
-    $this->createNodeType('page', st('Basic page'), TRANSLATION_ENABLED, FALSE);
+    $this->createNodeType('page', 'Basic page', TRANSLATION_ENABLED, FALSE);
     $this->attachFields('node', 'page', array(TRUE, TRUE, FALSE, FALSE));
   }
 
@@ -45,7 +45,8 @@ class TMGMTNodeSourceTestCase extends TMGMTEntityTestCaseUtility {
     for ($i = 0; $i < 2; $i++) {
       $node = $this->createNode('page');
       // Create a job item for this node and add it to the job.
-      $job->addItem('node', 'node', $node->nid);
+      $item = $job->addItem('node', 'node', $node->nid);
+      $this->assertEqual('Basic page', $item->getSourceType());
     }
 
     // Translate the job.
diff --git a/tmgmt.info b/tmgmt.info
index f581284..8fafd9b 100644
--- a/tmgmt.info
+++ b/tmgmt.info
@@ -39,6 +39,7 @@ files[] = tests/tmgmt.upgrade.alpha1.test
 ; Views integration and handlers
 files[] = views/tmgmt.views.inc
 files[] = views/handlers/tmgmt_handler_field_tmgmt_entity_label.inc
+files[] = views/handlers/tmgmt_handler_field_tmgmt_job_item_type.inc
 files[] = views/handlers/tmgmt_handler_field_tmgmt_translator.inc
 files[] = views/handlers/tmgmt_handler_field_tmgmt_job_operations.inc
 files[] = views/handlers/tmgmt_handler_field_tmgmt_progress.inc
diff --git a/ui/includes/tmgmt_ui.pages.inc b/ui/includes/tmgmt_ui.pages.inc
index 4e65daf..7d8717d 100644
--- a/ui/includes/tmgmt_ui.pages.inc
+++ b/ui/includes/tmgmt_ui.pages.inc
@@ -628,7 +628,7 @@ function _tmgmt_ui_translation_suggestions(array &$suggestions_table, array &$fo
     $suggestions_table['#empty'] = t('No related suggestions available.');
     $suggestions_table['#header'] = array(
       'title' => t('Title'),
-      'plugin' => t('Plugin'),
+      'plugin' => t('Type'),
       'reason' => t('Reason'),
       'words' => t('Word count'),
     );
@@ -648,10 +648,9 @@ function _tmgmt_ui_add_suggestion_item(array $result) {
   $item = $result['job_item'];
 
   $reason = isset($result['reason']) ? $result['reason'] : NULL;
-  $labels = _tmgmt_plugin_labels('source');
   $option = array(
     'title' => $item->label(),
-    'plugin' => isset($labels[$item->plugin]) ? $labels[$item->plugin] : '',
+    'plugin' => $item->getSourceType(),
     'words' => $item->getWordCount(),
     'reason' => $reason,
   );
diff --git a/ui/tmgmt_ui.module b/ui/tmgmt_ui.module
index 7c67c8e..3102ca5 100644
--- a/ui/tmgmt_ui.module
+++ b/ui/tmgmt_ui.module
@@ -386,11 +386,10 @@ function tmgmt_ui_translation_review_form_defaults($form, &$form_state, TMGMTJob
     '#suffix' => '</div>',
   );
 
-  $source_labels = tmgmt_source_plugin_labels();
   $form['info']['sourcetype'] = array(
     '#type' => 'item',
     '#title' => t('Source type'),
-    '#markup' => $source_labels[$item->plugin],
+    '#markup' => $item->getSourceType(),
     '#prefix' => '<div class="tmgmt-ui-source-type tmgmt-ui-info-item">',
     '#suffix' => '</div>',
   );
diff --git a/ui/views/tmgmt_ui_job_items.view.inc b/ui/views/tmgmt_ui_job_items.view.inc
index efb1451..99a8db3 100644
--- a/ui/views/tmgmt_ui_job_items.view.inc
+++ b/ui/views/tmgmt_ui_job_items.view.inc
@@ -1,6 +1,6 @@
 <?php
 
-$view = new view;
+$view = new view();
 $view->name = 'tmgmt_ui_job_items';
 $view->description = 'Displays all job items that belong to a job.';
 $view->tag = 'Translation Management';
@@ -13,6 +13,7 @@ $view->disabled = FALSE; /* Edit this to true to make a default view disabled in
 /* Display: Master */
 $handler = $view->new_display('default', 'Master', 'default');
 $handler->display->display_options['title'] = 'Job Items';
+$handler->display->display_options['use_more_always'] = FALSE;
 $handler->display->display_options['access']['type'] = 'none';
 $handler->display->display_options['cache']['type'] = 'none';
 $handler->display->display_options['query']['type'] = 'views_query';
@@ -62,7 +63,6 @@ $handler->display->display_options['style_options']['info'] = array(
 $handler->display->display_options['empty']['area']['id'] = 'area';
 $handler->display->display_options['empty']['area']['table'] = 'views';
 $handler->display->display_options['empty']['area']['field'] = 'area';
-$handler->display->display_options['empty']['area']['empty'] = FALSE;
 $handler->display->display_options['empty']['area']['content'] = 'There are no items attached to this translation job.';
 $handler->display->display_options['empty']['area']['format'] = 'filtered_html';
 /* Field: Label */
@@ -70,11 +70,10 @@ $handler->display->display_options['fields']['label']['id'] = 'label';
 $handler->display->display_options['fields']['label']['table'] = 'tmgmt_job_item';
 $handler->display->display_options['fields']['label']['field'] = 'label';
 $handler->display->display_options['fields']['label']['ui_name'] = 'Label';
-/* Field: Plugin */
-$handler->display->display_options['fields']['plugin']['id'] = 'plugin';
-$handler->display->display_options['fields']['plugin']['table'] = 'tmgmt_job_item';
-$handler->display->display_options['fields']['plugin']['field'] = 'plugin';
-$handler->display->display_options['fields']['plugin']['ui_name'] = 'Plugin';
+/* Field: Translation Management Job Item: Type */
+$handler->display->display_options['fields']['type']['id'] = 'type';
+$handler->display->display_options['fields']['type']['table'] = 'tmgmt_job_item';
+$handler->display->display_options['fields']['type']['field'] = 'type';
 /* Field: State */
 $handler->display->display_options['fields']['state']['id'] = 'state';
 $handler->display->display_options['fields']['state']['table'] = 'tmgmt_job_item';
@@ -89,25 +88,6 @@ $handler->display->display_options['fields']['progress']['ui_name'] = 'Progress'
 $handler->display->display_options['fields']['word_count_1']['id'] = 'word_count_1';
 $handler->display->display_options['fields']['word_count_1']['table'] = 'tmgmt_job_item';
 $handler->display->display_options['fields']['word_count_1']['field'] = 'word_count';
-$handler->display->display_options['fields']['word_count_1']['alter']['alter_text'] = 0;
-$handler->display->display_options['fields']['word_count_1']['alter']['make_link'] = 0;
-$handler->display->display_options['fields']['word_count_1']['alter']['absolute'] = 0;
-$handler->display->display_options['fields']['word_count_1']['alter']['external'] = 0;
-$handler->display->display_options['fields']['word_count_1']['alter']['replace_spaces'] = 0;
-$handler->display->display_options['fields']['word_count_1']['alter']['trim_whitespace'] = 0;
-$handler->display->display_options['fields']['word_count_1']['alter']['nl2br'] = 0;
-$handler->display->display_options['fields']['word_count_1']['alter']['word_boundary'] = 1;
-$handler->display->display_options['fields']['word_count_1']['alter']['ellipsis'] = 1;
-$handler->display->display_options['fields']['word_count_1']['alter']['more_link'] = 0;
-$handler->display->display_options['fields']['word_count_1']['alter']['strip_tags'] = 0;
-$handler->display->display_options['fields']['word_count_1']['alter']['trim'] = 0;
-$handler->display->display_options['fields']['word_count_1']['alter']['html'] = 0;
-$handler->display->display_options['fields']['word_count_1']['element_label_colon'] = 1;
-$handler->display->display_options['fields']['word_count_1']['element_default_classes'] = 1;
-$handler->display->display_options['fields']['word_count_1']['hide_empty'] = 0;
-$handler->display->display_options['fields']['word_count_1']['empty_zero'] = 0;
-$handler->display->display_options['fields']['word_count_1']['hide_alter_empty'] = 1;
-$handler->display->display_options['fields']['word_count_1']['format_plural'] = 0;
 /* Field: Changed */
 $handler->display->display_options['fields']['changed']['id'] = 'changed';
 $handler->display->display_options['fields']['changed']['table'] = 'tmgmt_job_item';
@@ -129,6 +109,32 @@ $handler->display->display_options['arguments']['tjid']['default_argument_type']
 $handler->display->display_options['arguments']['tjid']['summary']['number_of_records'] = '0';
 $handler->display->display_options['arguments']['tjid']['summary']['format'] = 'default_summary';
 $handler->display->display_options['arguments']['tjid']['summary_options']['items_per_page'] = '25';
+
+/* Display: Submit list */
+$handler = $view->new_display('block', 'Submit list', 'submit');
+$handler->display->display_options['defaults']['fields'] = FALSE;
+/* Field: Label */
+$handler->display->display_options['fields']['label']['id'] = 'label';
+$handler->display->display_options['fields']['label']['table'] = 'tmgmt_job_item';
+$handler->display->display_options['fields']['label']['field'] = 'label';
+$handler->display->display_options['fields']['label']['ui_name'] = 'Label';
+/* Field: Translation Management Job Item: Type */
+$handler->display->display_options['fields']['type']['id'] = 'type';
+$handler->display->display_options['fields']['type']['table'] = 'tmgmt_job_item';
+$handler->display->display_options['fields']['type']['field'] = 'type';
+/* Field: Translation Management Job Item: Word count */
+$handler->display->display_options['fields']['word_count_1']['id'] = 'word_count_1';
+$handler->display->display_options['fields']['word_count_1']['table'] = 'tmgmt_job_item';
+$handler->display->display_options['fields']['word_count_1']['field'] = 'word_count';
+/* Field: Operations */
+$handler->display->display_options['fields']['operations']['id'] = 'operations';
+$handler->display->display_options['fields']['operations']['table'] = 'tmgmt_job_item';
+$handler->display->display_options['fields']['operations']['field'] = 'operations';
+$handler->display->display_options['fields']['operations']['ui_name'] = 'Operations';
+$handler->display->display_options['fields']['operations']['element_label_colon'] = FALSE;
+
+/* Display: Block */
+$handler = $view->new_display('block', 'Block', 'block');
 $translatables['tmgmt_ui_job_items'] = array(
   t('Master'),
   t('Job Items'),
@@ -141,9 +147,13 @@ $translatables['tmgmt_ui_job_items'] = array(
   t('Items per page'),
   t('- All -'),
   t('Offset'),
+  t('« first'),
+  t('‹ previous'),
+  t('next ›'),
+  t('last »'),
   t('There are no items attached to this translation job.'),
   t('Label'),
-  t('Plugin'),
+  t('Type'),
   t('State'),
   t('Progress'),
   t('Word count'),
@@ -152,4 +162,6 @@ $translatables['tmgmt_ui_job_items'] = array(
   t('Changed'),
   t('Operations'),
   t('All'),
+  t('Submit list'),
+  t('Block'),
 );
diff --git a/views/handlers/tmgmt_handler_field_tmgmt_job_item_type.inc b/views/handlers/tmgmt_handler_field_tmgmt_job_item_type.inc
new file mode 100644
index 0000000..5f6a86b
--- /dev/null
+++ b/views/handlers/tmgmt_handler_field_tmgmt_job_item_type.inc
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * Field handler which shows the type of a job item.
+ *
+ * @ingroup views_field_handlers
+ */
+class tmgmt_handler_field_tmgmt_job_item_type extends views_handler_field_entity {
+
+  function render($values) {
+    if ($entity = $this->get_value($values)) {
+      return $entity->getSourceType();
+    }
+  }
+
+}
diff --git a/views/tmgmt.views.inc b/views/tmgmt.views.inc
index 51dd280..c25d94e 100644
--- a/views/tmgmt.views.inc
+++ b/views/tmgmt.views.inc
@@ -33,6 +33,13 @@ class TMGMTJobItemViewsController extends EntityDefaultViewsController {
         'handler' => 'tmgmt_handler_field_tmgmt_entity_label',
       ),
     );
+    $data['tmgmt_job_item']['type'] = array(
+      'title' => t('Type'),
+      'help' => t('Displays a type of the job item.'),
+      'field' => array(
+        'handler' => 'tmgmt_handler_field_tmgmt_job_item_type',
+      ),
+    );
     $data['tmgmt_job_item']['progress'] = array(
       'title' => t('Progress'),
       'help' => t('Displays the progress of a job item.'),
