diff --git a/translators/tmgmt_local/includes/tmgmt_local.pages.inc b/translators/tmgmt_local/includes/tmgmt_local.pages.inc
index ee0d82e..f9ca06c 100644
--- a/translators/tmgmt_local/includes/tmgmt_local.pages.inc
+++ b/translators/tmgmt_local/includes/tmgmt_local.pages.inc
@@ -406,6 +406,12 @@ function tmgmt_local_translation_form_update_state_ajax($form, &$form_state) {
 function tmgmt_local_translation_assign_form($form, &$form_state, $tasks) {
   $form_state['tasks'] = explode(',', $tasks);
 
+  $roles = tmgmt_local_translator_roles();
+  if (empty($roles)) {
+    drupal_set_message(t('No user role has the "provide translation services" permission. <a href="@url">Configure permissions</a> for the Local translator module.',
+      array('@url' => url('admin/people/permissions'))), 'warning');
+  }
+
   $form['tuid'] = array(
     '#title' => t('Assign to'),
     '#type' => 'select',
@@ -453,6 +459,12 @@ function tmgmt_local_translation_assign_form_submit($form, &$form_state) {
 function tmgmt_local_translation_reassign_form($form, &$form_state, $tasks) {
   $form_state['tasks'] = explode(',', $tasks);
 
+  $roles = tmgmt_local_translator_roles();
+  if (empty($roles)) {
+    drupal_set_message(t('No user role has the "provide translation services" permission. <a href="@url">Configure permissions</a> for the Local translator module.',
+      array('@url' => url('admin/people/permissions'))), 'warning');
+  }
+
   $form['tuid'] = array(
     '#title' => t('Assign to'),
     '#type' => 'select',
diff --git a/translators/tmgmt_local/tmgmt_local.module b/translators/tmgmt_local/tmgmt_local.module
index 23cc68e..d5db1f3 100644
--- a/translators/tmgmt_local/tmgmt_local.module
+++ b/translators/tmgmt_local/tmgmt_local.module
@@ -591,7 +591,7 @@ function tmgmt_local_get_translators_for_tasks($tasks) {
     return call_user_func_array('array_intersect', $translators);
   }
 
-  return array_shift($translators);
+  return $translators;
 }
 
 /**
@@ -844,8 +844,15 @@ function tmgmt_local_capabilities_query($source_language = NULL, $target_languag
   }
 
   // Only consider users that have the 'provide translation services' perm.
-  $roles = user_roles(TRUE, 'provide translation services');
-  $query->leftJoin('users_roles', 'ur', "ur.uid = u.uid AND ur.rid IN (:roles)", array(':roles' => implode(', ', array_keys($roles))));
+  $query->leftJoin('users_roles', 'ur', 'ur.uid = u.uid');
+
+  $roles = tmgmt_local_translator_roles();
+  if (!in_array('authenticated user', $roles)) {
+    $rids = array_keys($roles);
+    $rids = !empty($rids) ? $rids : NULL;
+    $query->condition('ur.rid', $rids);
+    $query->isNotNull('ur.rid');
+  }
 
   // Add a tag so other modules can alter this query at will.
   $query->addTag('tmgmt_translation_combination');
@@ -853,4 +860,14 @@ function tmgmt_local_capabilities_query($source_language = NULL, $target_languag
   return $query;
 }
 
+/**
+ * Get roles with 'provide translation services' permissions.
+ *
+ * @return array
+ *   An associative array with the role id as the key and the role name as
+ *   value.
+ */
+function tmgmt_local_translator_roles() {
+  return user_roles(TRUE, 'provide translation services');
+}
 
diff --git a/translators/tmgmt_local/tmgmt_local.test b/translators/tmgmt_local/tmgmt_local.test
index db133c9..348cc7d 100644
--- a/translators/tmgmt_local/tmgmt_local.test
+++ b/translators/tmgmt_local/tmgmt_local.test
@@ -160,6 +160,36 @@ class TMGMTLocalTestCase extends TMGMTBaseTestCase {
     $job->addItem('test_source', 'test', '1');
     $job->addItem('test_source', 'test', '2');
 
+    // Revoke translation permissions for the translator to test assign and
+    // reassign actions without having an eligible translator.
+    $rid = NULL;
+    foreach ($this->local_translator->roles as $rid => $role) {
+      if ($role != 'authenticated user') {
+        user_role_revoke_permissions($rid, $this->local_translator_permissions);
+        break;
+      }
+    }
+
+    // Login as admin and visit the assign/reassign tasks page to check for the
+    // warning message about the missing permission.
+    $this->loginAsAdmin(array('administer translation tasks'));
+
+    $query = new EntityFieldQuery();
+    $query->entityCondition('entity_type', 'tmgmt_local_task')->propertyCondition('tjid', $job->tjid);
+    $tsids = array_keys($query->execute());
+    $tsid = reset($tsids);
+
+    $this->drupalGet('manage-translate/reassign-tasks/' . $tsid);
+    $this->assertRaw(t('No user role has the "provide translation services" permission. <a href="@url">Configure permissions</a> for the Local translator module.',
+      array('@url' => url('admin/people/permissions'))));
+
+    $this->drupalGet('manage-translate/assign-tasks/' . $tsid);
+    $this->assertRaw(t('No user role has the "provide translation services" permission. <a href="@url">Configure permissions</a> for the Local translator module.',
+      array('@url' => url('admin/people/permissions'))));
+
+    // Grant back revoked permissions.
+    user_role_grant_permissions($rid, $this->local_translator_permissions);
+
     // Create another local translator with the required capabilities.
     $other_translator_same = $this->drupalCreateUser($this->local_translator_permissions);
     $this->drupalLogin($other_translator_same);
@@ -440,6 +470,31 @@ class TMGMTLocalTestCase extends TMGMTBaseTestCase {
 
     $all_translators = array();
 
+    // Create a user that will have removed the translation permissions.
+    $not_translator = $this->drupalCreateUser($this->local_translator_permissions);
+    $this->drupalLogin($not_translator);
+    $edit = array(
+      'tmgmt_translation_skills[und][0][language_from]' => 'en',
+      'tmgmt_translation_skills[und][0][language_to]' => 'ru',
+    );
+    $this->drupalPost('user/' . $not_translator->uid . '/edit', $edit, t('Save'));
+    // Now revoke translation permissions.
+    foreach ($not_translator->roles as $rid => $role) {
+      if ($role != 'authenticated user') {
+        user_role_revoke_permissions($rid, $this->local_translator_permissions);
+        break;
+      }
+    }
+
+    // Test for the case when we have users with capabilities but not with
+    // permissions to translate.
+    $this->assertEqual(tmgmt_local_supported_language_pairs(), array());
+    $local_cache = &drupal_static('tmgmt_local_supported_language_pairs');
+    $local_cache = NULL;
+    $this->assertEqual(tmgmt_local_translators(), array());
+    $local_cache = &drupal_static('tmgmt_local_translators');
+    $local_cache = NULL;
+
     $translator1 = $this->drupalCreateUser($this->local_translator_permissions);
     $all_translators[$translator1->uid] = $translator1->name;
     $this->drupalLogin($translator1);
