diff --git a/src/Entity/Translator.php b/src/Entity/Translator.php
index 22316e8..087458a 100644
--- a/src/Entity/Translator.php
+++ b/src/Entity/Translator.php
@@ -13,6 +13,7 @@ use Drupal\Core\Cache\Cache;
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\tmgmt\JobInterface;
+use Drupal\tmgmt\TMGMTResponse;
 use Drupal\tmgmt\TranslatorInterface;
 
 /**
@@ -309,7 +310,7 @@ class Translator extends ConfigEntityBase implements TranslatorInterface {
     if ($controller = $this->getPlugin()) {
       return $controller->isAvailable($this);
     }
-    return FALSE;
+    return new TMGMTResponse(FALSE, t('@translator is not available. Make sure it is properly !configured.'), array('@translator' => $this->label(), '!configured' => $this->link(t('configured'))));
   }
 
   /**
@@ -322,15 +323,7 @@ class Translator extends ConfigEntityBase implements TranslatorInterface {
     return FALSE;
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function getNotAvailableReason() {
-    if ($controller = $this->getPlugin()) {
-      return $controller->getNotAvailableReason($this);
-    }
-    return FALSE;
-  }
+
 
   /**
    * {@inheritdoc}
diff --git a/src/Form/JobForm.php b/src/Form/JobForm.php
index 04e0b1c..65bc5de 100644
--- a/src/Form/JobForm.php
+++ b/src/Form/JobForm.php
@@ -17,6 +17,7 @@ use Drupal\Core\Url;
 use Drupal\tmgmt\Entity\Job;
 use Drupal\tmgmt\Entity\JobItem;
 use Drupal\tmgmt\JobInterface;
+use Drupal\tmgmt\TMGMTResponse;
 use Drupal\views\Views;
 
 /**
@@ -421,8 +422,10 @@ class JobForm extends TmgmtFormBase {
     $translator = $job->getTranslator();
     // Check translator availability.
     if (!empty($translator)) {
-      if (!$translator->isAvailable()) {
-        $form_state->setErrorByName('translator', $translator->getNotAvailableReason());
+      $result = $translator->isAvailable();
+      if (!($result->getSuccess())) {
+       // $result = new TMGMTResponse(FALSE, t('@translator is not available. Make sure it is properly !configured.'), array('@translator' => $translator->label(), '!configured' => $translator->link(t('configured'))));
+        $form_state->setErrorByName('translator', $result->getMessage());
       }
       elseif (!$translator->canTranslate($job)) {
         $form_state->setErrorByName('translator', $translator->getNotCanTranslateReason($job));
@@ -497,8 +500,9 @@ class JobForm extends TmgmtFormBase {
     if (!$translator) {
       return $form;
     }
-    if (!$translator->isAvailable()) {
-      $form['#description'] = Xss::filter($job->getTranslator()->getNotAvailableReason());
+    if (!$translator->isAvailable()->getSuccess()) {
+      $result = new TMGMTResponse(FALSE, t('@translator is not available. Make sure it is properly !configured.'), array('@translator' => $translator->label(), '!configured' => $translator->link(t('configured'))));
+      $form['#description'] = Xss::filter($result->getMessage());
     }
     // @todo: if the target language is not defined, the check will not work if the first language in the list is not available.
     elseif ($job->getTargetLangcode() && !$translator->canTranslate($job)) {
diff --git a/src/TMGMTResponse.php b/src/TMGMTResponse.php
new file mode 100644
index 0000000..6791614
--- /dev/null
+++ b/src/TMGMTResponse.php
@@ -0,0 +1,68 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\tmgmt\TMGMTResponse.
+ */
+
+namespace Drupal\tmgmt;
+
+/**
+ * TMGMT Response class.
+ */
+class TMGMTResponse {
+
+  /**
+   * TRUE or FALSE for response.
+   *
+   * @var boolean
+   */
+  protected $success;
+
+  /**
+   * Message in case bit is FALSE.
+   *
+   * @var string
+   */
+  protected $message;
+
+  /**
+   * Argument about the error.
+   *
+   * @var array
+   */
+  protected $args;
+
+  /**
+   * Constructs a new TMGMT Response Object.
+   *
+   * @param bool $success
+   *   Response either TRUE or FALSE.
+   * @param string $message
+   *    Message about the error.
+   * @param array $args
+   *    Associative array of dynamic data that will be inserted into $message.
+   */
+  public function __construct($success, $message = "", $args = array()) {
+    $this->success = $success;
+    if (!$success) {
+      $this->message = $message;
+      $this->args = $args;
+    }
+  }
+
+  /**
+   * Returns the object message.
+   */
+  public function getMessage() {
+    $argumented_message = t($this->message, $this->args);
+    return $argumented_message;
+  }
+
+  /**
+   * Returns the object state on success.
+   */
+  public function getSuccess() {
+    return $this->success;
+  }
+}
diff --git a/src/Tests/TMGMTUiTest.php b/src/Tests/TMGMTUiTest.php
index 4300414..4230b43 100644
--- a/src/Tests/TMGMTUiTest.php
+++ b/src/Tests/TMGMTUiTest.php
@@ -289,6 +289,13 @@ class TMGMTUiTest extends TMGMTTestBase {
     // Verify that we are on the submit job page.
     $this->drupalPostForm(NULL, array(), t('Submit to translator'));
 
+    // Test for Unavailable/Unconfigured Translators.
+    $this->default_translator->setSetting('action', 'not_translatable');
+    $this->default_translator->save();
+    $this->drupalGet(t('admin/tmgmt/jobs/@jobs', array('@jobs' => $job->id())));
+    $this->drupalPostForm(NULL, array(), t('Submit to translator'));
+    $this->assertUniqueText(t('1 error has been found:'));
+
     // Login as administrator to delete a job.
     $this->loginAsAdmin();
     $this->drupalGet('admin/tmgmt/jobs');
diff --git a/src/TranslatorInterface.php b/src/TranslatorInterface.php
index 2dce386..fa322c3 100644
--- a/src/TranslatorInterface.php
+++ b/src/TranslatorInterface.php
@@ -140,7 +140,7 @@ interface TranslatorInterface extends ConfigEntityInterface {
   /**
    * Checks whether a translator is available.
    *
-   * @return bool
+   * @return TMGMTResponse
    *   TRUE if the translator plugin is available, FALSE otherwise.
    */
   public function isAvailable();
@@ -155,11 +155,6 @@ interface TranslatorInterface extends ConfigEntityInterface {
 
   /**
    * @todo Remove this once http://drupal.org/node/1420364 is done.
-   */
-  public function getNotAvailableReason();
-
-  /**
-   * @todo Remove this once http://drupal.org/node/1420364 is done.
    *
    * * @param \Drupal\tmgmt\JobInterface $job
    *   The Job entity that should be translated.
diff --git a/src/TranslatorPluginBase.php b/src/TranslatorPluginBase.php
index 4de183a..3195470 100644
--- a/src/TranslatorPluginBase.php
+++ b/src/TranslatorPluginBase.php
@@ -41,7 +41,7 @@ abstract class TranslatorPluginBase extends PluginBase implements TranslatorPlug
    */
   public function isAvailable(TranslatorInterface $translator) {
     // Assume that the translation service is always available.
-    return TRUE;
+    return new TMGMTResponse(TRUE);
   }
 
   /**
@@ -49,10 +49,10 @@ abstract class TranslatorPluginBase extends PluginBase implements TranslatorPlug
    */
   public function canTranslate(TranslatorInterface $translator, JobInterface $job) {
     // The job is only translatable if the translator is available too.
-    if ($this->isAvailable($translator) && array_key_exists($job->getTargetLangcode(), $translator->getSupportedTargetLanguages($job->getSourceLangcode()))) {
+    if ($this->isAvailable($translator)->getSuccess() && array_key_exists($job->getTargetLangcode(), $translator->getSupportedTargetLanguages($job->getSourceLangcode()))) {
       // We can only translate this job if the target language of the job is in
       // one of the supported languages.
-      return TRUE;
+      return new TMGMTResponse(TRUE);
     }
     return FALSE;
   }
@@ -173,12 +173,6 @@ abstract class TranslatorPluginBase extends PluginBase implements TranslatorPlug
     return t('@translator can not translate from @source to @target.', array('@translator' => $job->getTranslator()->label(), '@source' => $job->getSourceLanguage()->getName(), '@target' => $job->getTargetLanguage()->getName()));
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function getNotAvailableReason(TranslatorInterface $translator) {
-    return t('@translator is not available. Make sure it is properly !configured.', array('@translator' => $this->pluginDefinition['label'], '!configured' => $translator->link(t('configured'))));
-  }
 
   /**
    * {@inheritdoc}
diff --git a/src/TranslatorPluginInterface.php b/src/TranslatorPluginInterface.php
index c6af5ce..20aa9bb 100644
--- a/src/TranslatorPluginInterface.php
+++ b/src/TranslatorPluginInterface.php
@@ -22,23 +22,12 @@ interface TranslatorPluginInterface extends PluginInspectionInterface {
    * @param TranslatorInterface $translator
    *   The translator entity.
    *
-   * @return boolean
+   * @return TMGMTResponse
    *   TRUE if the translator plugin is available, FALSE otherwise.
    */
   public function isAvailable(TranslatorInterface $translator);
 
-  /**
-   * Return a reason why the translator is not available.
-   *
-   * @param TranslatorInterface $translator
-   *   The translator entity.
-   *
-   * Might be called when isAvailable() returns FALSE to get a reason that
-   * can be displayed to the user.
-   *
-   * @todo Remove this once http://drupal.org/node/1420364 is done.
-   */
-  public function getNotAvailableReason(TranslatorInterface $translator);
+
 
   /**
    * Check whether this service can handle a particular translation job.
diff --git a/tmgmt.module b/tmgmt.module
index 9f140e4..1caf7d4 100644
--- a/tmgmt.module
+++ b/tmgmt.module
@@ -391,7 +391,7 @@ function tmgmt_message_create($message = '', $variables = array(), $values = arr
 function tmgmt_translator_load_available($job) {
   $translators = Translator::loadMultiple();
   foreach ($translators as $name => $translator) {
-    if (!$translator->isAvailable() || (isset($job) && !$translator->canTranslate($job))) {
+    if (!$translator->isAvailable()->getSuccess() || (isset($job) && !$translator->canTranslate($job))) {
       unset($translators[$name]);
     }
   }
@@ -468,7 +468,7 @@ function tmgmt_translator_labels() {
 function tmgmt_translator_labels_flagged($job = NULL) {
   $labels = array();
   foreach (Translator::loadMultiple() as $translator) {
-    if (!$translator->isAvailable()) {
+    if (!$translator->isAvailable()->getSuccess()) {
       $labels[$translator->id()] = t('@label (not available)', array('@label' => $translator->label()));
     }
     elseif (isset($job) && !$translator->canTranslate($job)) {
