diff --git a/src/Entity/Job.php b/src/Entity/Job.php
index 165843d..c274152 100644
--- a/src/Entity/Job.php
+++ b/src/Entity/Job.php
@@ -18,6 +18,7 @@ use Drupal\Core\Session\AccountInterface;
 use Drupal\tmgmt\JobInterface;
 use Drupal\tmgmt\JobItemInterface;
 use Drupal\tmgmt\TMGMTException;
+use Drupal\tmgmt\Translator\TranslatableResult;
 use Drupal\user\EntityOwnerInterface;
 use Drupal\user\UserInterface;
 
@@ -517,11 +518,9 @@ class Job extends ContentEntityBase implements EntityOwnerInterface, JobInterfac
    */
   public function canRequestTranslation() {
     if ($translator = $this->getTranslator()) {
-      if ($translator->canTranslate($this)) {
-        return TRUE;
-      }
+      return $translator->checkTranslatable($this);
     }
-    return FALSE;
+    return TranslatableResult::no(t('Translation cant be requested.'));
   }
 
   /**
@@ -594,13 +593,13 @@ class Job extends ContentEntityBase implements EntityOwnerInterface, JobInterfac
    * {@inheritdoc}
    */
   public function requestTranslation() {
-    if (!$this->canRequestTranslation() || !$plugin = $this->getTranslatorPlugin()) {
+    if (!$this->canRequestTranslation()->getSuccess()) {
       return FALSE;
     }
     // We don't know if the translator plugin already processed our
     // translation request after this point. That means that the plugin has to
     // set the 'submitted', 'needs review', etc. states on its own.
-    $plugin->requestTranslation($this);
+    $this->getTranslatorPlugin()->requestTranslation($this);
   }
 
   /**
diff --git a/src/Entity/Translator.php b/src/Entity/Translator.php
index fdcc1f3..1bf7488 100644
--- a/src/Entity/Translator.php
+++ b/src/Entity/Translator.php
@@ -13,6 +13,8 @@ use Drupal\Core\Cache\Cache;
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\tmgmt\JobInterface;
+use Drupal\tmgmt\Translator\AvailableResult;
+use Drupal\tmgmt\Translator\TranslatableResult;
 use Drupal\tmgmt\TranslatorInterface;
 
 /**
@@ -306,21 +308,24 @@ class Translator extends ConfigEntityBase implements TranslatorInterface {
   /**
    * {@inheritdoc}
    */
-  public function canTranslate(JobInterface $job) {
+  public function checkTranslatable(JobInterface $job) {
     if ($plugin = $this->getPlugin()) {
-      return $plugin->canTranslate($this, $job);
+      return $plugin->checkTranslatable($this, $job);
     }
-    return FALSE;
+    return TranslatableResult::no(t('Missing translator plugin'));
   }
 
   /**
    * {@inheritdoc}
    */
-  public function isAvailable() {
+  public function checkAvailable() {
     if ($plugin = $this->getPlugin()) {
-      return $plugin->isAvailable($this);
+      return $plugin->checkAvailable($this);
     }
-    return FALSE;
+    return AvailableResult::no(t('@translator is not available. Make sure it is properly <a href=:configured>configured</a>.', [
+      '@translator' => $this->label(),
+      ':configured' => $this->url()
+    ]));
   }
 
   /**
@@ -333,25 +338,6 @@ class Translator extends ConfigEntityBase implements TranslatorInterface {
     return FALSE;
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function getNotAvailableReason() {
-    if ($plugin = $this->getPlugin()) {
-      return $plugin->getNotAvailableReason($this);
-    }
-    return FALSE;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getNotCanTranslateReason(JobInterface $job) {
-    if ($plugin = $this->getPlugin()) {
-      return $plugin->getNotCanTranslateReason($job);
-    }
-    return FALSE;
-  }
 
   /**
    * {@inheritdoc}
diff --git a/src/Form/JobForm.php b/src/Form/JobForm.php
index c1670b1..7b6dc5b 100644
--- a/src/Form/JobForm.php
+++ b/src/Form/JobForm.php
@@ -17,6 +17,8 @@ use Drupal\Core\Url;
 use Drupal\tmgmt\Entity\Job;
 use Drupal\tmgmt\Entity\JobItem;
 use Drupal\tmgmt\JobInterface;
+use Drupal\tmgmt\Translator\AvailableResult;
+use Drupal\tmgmt\Translator\TranslatableResult;
 use Drupal\views\Views;
 
 /**
@@ -415,17 +417,18 @@ class JobForm extends TmgmtFormBase {
    * {@inheritdoc}
    */
   public function validateForm(array &$form, FormStateInterface $form_state) {
-    parent::validateForm($form, $form_state);
-    $job = $this->buildEntity($form, $form_state);
-    // Load the selected translator.
-    $translator = $job->getTranslator();
+    /** @var \Drupal\tmgmt\JobInterface $job */
+    $job = parent::validateForm($form, $form_state);
+    if ($job->hasTranslator()) {
+      $translator = $job->getTranslator();
     // Check translator availability.
-    if (!empty($translator)) {
-      if (!$translator->isAvailable()) {
-        $form_state->setErrorByName('translator', $translator->getNotAvailableReason());
+      $available_status = $translator->checkAvailable();
+      $translatable_status = $translator->checkTranslatable($job);
+      if (!($available_status->getSuccess())) {
+        $form_state->setErrorByName('translator', $available_status->getReason());
       }
-      elseif (!$translator->canTranslate($job)) {
-        $form_state->setErrorByName('translator', $translator->getNotCanTranslateReason($job));
+      elseif (!$translatable_status->getSuccess()) {
+        $form_state->setErrorByName('translator', $translatable_status->getReason());
       }
     }
   }
@@ -434,10 +437,11 @@ class JobForm extends TmgmtFormBase {
    * {@inheritdoc}
    */
   public function buildEntity(array $form, FormStateInterface $form_state) {
+    /** @var \Drupal\tmgmt\JobInterface $job */
     $job = parent::buildEntity($form, $form_state);
 
+    if ($job->hasTranslator()) {
     $translator = $job->getTranslator();
-    if (!empty($translator)) {
       // If requested custom job settings handling, copy values from original job.
       if ($translator->hasCustomSettingsHandling()) {
         $original_job = entity_load_unchanged('tmgmt_job', $job->id());
@@ -497,17 +501,19 @@ class JobForm extends TmgmtFormBase {
       return $form;
     }
     $translator = $job->getTranslator();
-    if (!$translator->isAvailable()) {
-      $form['#description'] = Xss::filter($job->getTranslator()->getNotAvailableReason());
+    $result = $translator->checkAvailable();
+    if (!$result->getSuccess()) {
+      $form['#description'] = $result->getSuccess();
+      return $form;
     }
     // @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)) {
-      $form['#description'] = Xss::filter($job->getTranslator()->getNotCanTranslateReason($job));
-    }
-    else {
-      $plugin_ui = $this->translatorManager->createUIInstance($translator->getPluginId());
-      $form = $plugin_ui->checkoutSettingsForm($form, $form_state, $job);
+    $result = $translator->checkTranslatable($job);
+    if ($job->getTargetLangcode() && !$result->getSuccess()) {
+      $form['#description'] = $result->getReason();
+      return $form;
     }
+    $plugin_ui = $this->translatorManager->createUIInstance($translator->getPluginId());
+    $form = $plugin_ui->checkoutSettingsForm($form, $form_state, $job);
     return $form;
   }
 
diff --git a/src/JobInterface.php b/src/JobInterface.php
index f0af381..ac9f5a0 100644
--- a/src/JobInterface.php
+++ b/src/JobInterface.php
@@ -41,7 +41,7 @@ interface JobInterface extends ContentEntityInterface, EntityOwnerInterface {
    *
    * The translator plugin can use this state if the job has been actively
    * rejected. However, this should be avoided by doing the necessary checks
-   * in the canTranslate() method and in the job configuration settings.
+   * in the checkTranslatable() method and in the job configuration settings.
    *
    * A rejected job can be re-submitted.
    */
@@ -368,8 +368,8 @@ interface JobInterface extends ContentEntityInterface, EntityOwnerInterface {
   /**
    * Checks whether a job is translatable.
    *
-   * @return bool
-   *   TRUE if the job can be translated, FALSE otherwise.
+   * @return \Drupal\tmgmt\Translator\TranslatableResult
+   *   Whether the job can be translated or not.
    */
   public function canRequestTranslation();
 
diff --git a/src/Tests/TMGMTUiTest.php b/src/Tests/TMGMTUiTest.php
index 804465a..7a32124 100644
--- a/src/Tests/TMGMTUiTest.php
+++ b/src/Tests/TMGMTUiTest.php
@@ -289,6 +289,20 @@ 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('admin/tmgmt/jobs/' . $job->id());
+    $this->drupalPostForm(NULL, array(), t('Submit to translator'));
+    $this->assertText(t('Test translator (auto created) can not translate from English to German.'));
+
+    // Test for Unavailable/Unconfigured Translators.
+    $this->default_translator->setSetting('action', 'not_available');
+    $this->default_translator->save();
+    $this->drupalGet('admin/tmgmt/jobs/' . $job->id());
+    $this->drupalPostForm(NULL, array(), t('Submit to translator'));
+    $this->assertText(t('@translator is not available. Make sure it is properly configured.', array('@translator' => 'Test translator (auto created)')));
+
     // Login as administrator to delete a job.
     $this->loginAsAdmin();
     $this->drupalGet('admin/tmgmt/jobs');
diff --git a/src/Translator/AvailableResult.php b/src/Translator/AvailableResult.php
new file mode 100644
index 0000000..7b06720
--- /dev/null
+++ b/src/Translator/AvailableResult.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\tmgmt\Translator\AvailableResult.
+ */
+
+namespace Drupal\tmgmt\Translator;
+
+/**
+ * Returns the result for an translator availability check.
+ */
+class AvailableResult extends TranslatorResult {
+}
diff --git a/src/Translator/TranslatableResult.php b/src/Translator/TranslatableResult.php
new file mode 100644
index 0000000..536b39b
--- /dev/null
+++ b/src/Translator/TranslatableResult.php
@@ -0,0 +1,13 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\tmgmt\TranslatableResult.
+ */
+
+namespace Drupal\tmgmt\Translator;
+
+/**
+ * Returns the result of whether a translator can translate a job.
+ */
+class TranslatableResult extends TranslatorResult {
+}
diff --git a/src/Translator/TranslatorResult.php b/src/Translator/TranslatorResult.php
new file mode 100644
index 0000000..384b7cc
--- /dev/null
+++ b/src/Translator/TranslatorResult.php
@@ -0,0 +1,101 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\tmgmt\TranslatorResult.
+ */
+
+namespace Drupal\tmgmt\Translator;
+
+use Drupal\Core\StringTranslation\TranslatableMarkup;
+
+/**
+ * Used by translator to return the boolean result of a check with a reason.
+ */
+abstract class TranslatorResult {
+
+  /**
+   * TRUE or FALSE for response.
+   *
+   * @var bool
+   */
+  protected $success;
+
+  /**
+   * Message in case success is FALSE.
+   *
+   * @var string
+   */
+  protected $message;
+
+  /**
+   * Constructs a result object.
+   *
+   * @param bool $success
+   *   Whether or not the check was successful.
+   * @param \Drupal\Core\StringTranslation\TranslatableMarkup|null $reason
+   *   The reason in case of an unsuccessful check.
+   */
+  protected function __construct($success, TranslatableMarkup $reason = NULL) {
+    $this->success = $success;
+    $this->message = $reason;
+  }
+
+  /**
+   * Returns the reason for an unsuccessful result.
+   *
+   * @return \Drupal\Core\StringTranslation\TranslatableMarkup
+   *   The reason.
+   */
+  public function getReason() {
+    return $this->message;
+  }
+
+  /**
+   * Returns the object state on success.
+   */
+  public function getSuccess() {
+    return $this->success;
+  }
+
+  /**
+   * Sets the value success to FALSE and sets the $message accordingly.
+   *
+   * @param string $message
+   *   This is the value to be saved as message for object.
+   */
+  protected function setNo($message) {
+    $this->success = FALSE;
+    $this->message = $message;
+  }
+
+  /**
+   * Sets the value success to TRUE.
+   */
+  protected function setYes() {
+    $this->success = TRUE;
+  }
+
+  /**
+   * Returns the object with TRUE.
+   *
+   * @return static
+   *   This returns the instance of the object with desired values.
+   */
+  public static function yes() {
+    return new static(TRUE);
+  }
+
+  /**
+   * Returns the object with FALSE and a message.
+   *
+   * @param \Drupal\Core\StringTranslation\TranslatableMarkup|null $reason
+   *   The reason in case of an unsuccessful check.
+   *
+   * @return static
+   *   This returns the instance of the object with desired values.
+   */
+  public static function no($reason) {
+    return new static(FALSE, $reason);
+  }
+}
diff --git a/src/TranslatorInterface.php b/src/TranslatorInterface.php
index 6379292..8b28140 100644
--- a/src/TranslatorInterface.php
+++ b/src/TranslatorInterface.php
@@ -140,18 +140,18 @@ interface TranslatorInterface extends ConfigEntityInterface {
    * @param \Drupal\tmgmt\JobInterface Job
    *   The Job entity that should be translated.
    *
-   * @return bool
+   * @return \Drupal\tmgmt\Translator\TranslatableResult
    *   TRUE if the job can be processed and translated, FALSE otherwise.
    */
-  public function canTranslate(JobInterface $job);
+  public function checkTranslatable(JobInterface $job);
 
   /**
    * Checks whether a translator is available.
    *
-   * @return bool
+   * @return \Drupal\tmgmt\Translator\AvailableResult
    *   TRUE if the translator plugin is available, FALSE otherwise.
    */
-  public function isAvailable();
+  public function checkAvailable();
 
   /**
    * Returns if the plugin has any settings for this job.
@@ -162,19 +162,6 @@ interface TranslatorInterface extends ConfigEntityInterface {
   public function hasCheckoutSettings(JobInterface $job);
 
   /**
-   * @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.
-   */
-  public function getNotCanTranslateReason(JobInterface $job);
-
-  /**
    * Gets existing remote languages mappings.
    *
    * This method is responsible to provide all local to remote language pairs.
diff --git a/src/TranslatorPluginBase.php b/src/TranslatorPluginBase.php
index 2efd518..5868bce 100644
--- a/src/TranslatorPluginBase.php
+++ b/src/TranslatorPluginBase.php
@@ -11,6 +11,8 @@ use Drupal\Component\Plugin\PluginBase;
 use Drupal\tmgmt\Entity\Job;
 use Drupal\tmgmt\Entity\JobItem;
 use Drupal\tmgmt\Entity\Translator;
+use Drupal\tmgmt\Translator\AvailableResult;
+use Drupal\tmgmt\Translator\TranslatableResult;
 
 /**
  * Default controller class for service plugins.
@@ -36,22 +38,22 @@ abstract class TranslatorPluginBase extends PluginBase implements TranslatorPlug
   /**
    * {@inheritdoc}
    */
-  public function isAvailable(TranslatorInterface $translator) {
+  public function checkAvailable(TranslatorInterface $translator) {
     // Assume that the translation service is always available.
-    return TRUE;
+    return AvailableResult::yes();
   }
 
   /**
    * {@inheritdoc}
    */
-  public function canTranslate(TranslatorInterface $translator, JobInterface $job) {
+  public function checkTranslatable(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->checkAvailable($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 TranslatableResult::yes();
     }
-    return FALSE;
+    return TranslatableResult::no(t('@translator can not translate from @source to @target.', array('@translator' => $translator->label(), '@source' => $job->getSourceLanguage()->getName(), '@target' => $job->getTargetLanguage()->getName())));
   }
 
   /**
@@ -109,20 +111,6 @@ abstract class TranslatorPluginBase extends PluginBase implements TranslatorPlug
   /**
    * {@inheritdoc}
    */
-  public function getNotCanTranslateReason(JobInterface $job) {
-    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}
-   */
   public function defaultSettings() {
     $defaults = array('auto_accept' => FALSE);
     // Check if any default settings are defined in the plugin info.
diff --git a/src/TranslatorPluginInterface.php b/src/TranslatorPluginInterface.php
index 5f2047b..f302604 100644
--- a/src/TranslatorPluginInterface.php
+++ b/src/TranslatorPluginInterface.php
@@ -22,23 +22,11 @@ interface TranslatorPluginInterface extends PluginInspectionInterface {
    * @param TranslatorInterface $translator
    *   The translator entity.
    *
-   * @return bool
-   *   TRUE if the translator plugin is available, FALSE otherwise.
+   * @return \Drupal\tmgmt\Translator\AvailableResult
+   *   The result of the availability check.
    */
-  public function isAvailable(TranslatorInterface $translator);
+  public function checkAvailable(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.
@@ -48,23 +36,10 @@ interface TranslatorPluginInterface extends PluginInspectionInterface {
    * @param \Drupal\tmgmt\JobInterface $job
    *   The Job entity that should be translated.
    *
-   * @return bool
-   *   TRUE if the job can be processed and translated, FALSE otherwise.
-   */
-  public function canTranslate(TranslatorInterface $translator, JobInterface $job);
-
-  /**
-   * Return a reason why the translator is not able to translate this job.
-   *
-   * @param \Drupal\tmgmt\JobInterface $job
-   *   The job entity.
-   *
-   * Might be called when canTranslate() returns FALSE to get a reason that
-   * can be displayed to the user.
-   *
-   * @todo Remove this once http://drupal.org/node/1420364 is done.
+   * @return \Drupal\tmgmt\Translator\TranslatableResult
+   *   The result of the translatable check.
    */
-  public function getNotCanTranslateReason(JobInterface $job);
+  public function checkTranslatable(TranslatorInterface $translator, JobInterface $job);
 
   /**
    * Specifies default mappings for local to remote language codes.
diff --git a/tmgmt.module b/tmgmt.module
index 89d6b64..a8603ea 100644
--- a/tmgmt.module
+++ b/tmgmt.module
@@ -8,7 +8,8 @@
 use Drupal\tmgmt\Entity\Job;
 use Drupal\tmgmt\Entity\Translator;
 use Drupal\Component\Utility\Html;
-use Drupal\Component\Utility\Xss;
+use Drupal\tmgmt\Translator\TranslatableResult;
+use Drupal\tmgmt\Translator\AvailableResult;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Url;
 use Drupal\tmgmt\Entity\JobItem;
@@ -388,7 +389,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->checkAvailable()->getSuccess() || (isset($job) && !$translator->checkTranslatable($job)->getSuccess())) {
       unset($translators[$name]);
     }
   }
@@ -465,10 +466,10 @@ function tmgmt_translator_labels() {
 function tmgmt_translator_labels_flagged($job = NULL) {
   $labels = array();
   foreach (Translator::loadMultiple() as $translator) {
-    if (!$translator->isAvailable()) {
+    if (!$translator->checkAvailable()->getSuccess()) {
       $labels[$translator->id()] = t('@label (not available)', array('@label' => $translator->label()));
     }
-    elseif (isset($job) && !$translator->canTranslate($job)) {
+    elseif (isset($job) && !$translator->checkTranslatable($job)->getSuccess()) {
       $labels[$translator->id()] = t('@label (unsupported)', array('@label' => $translator->label()));
     }
     else {
diff --git a/tmgmt_test/src/Plugin/tmgmt/Translator/TestTranslator.php b/tmgmt_test/src/Plugin/tmgmt/Translator/TestTranslator.php
index 9d6f6be..ebe08b5 100644
--- a/tmgmt_test/src/Plugin/tmgmt/Translator/TestTranslator.php
+++ b/tmgmt_test/src/Plugin/tmgmt/Translator/TestTranslator.php
@@ -8,7 +8,8 @@
 namespace Drupal\tmgmt_test\Plugin\tmgmt\Translator;
 
 use Drupal\Core\Form\FormStateInterface;
-use Drupal\tmgmt\Entity\Translator;
+use Drupal\tmgmt\Translator\AvailableResult;
+use Drupal\tmgmt\Translator\TranslatableResult;
 use Drupal\tmgmt\JobInterface;
 use Drupal\tmgmt\JobItemInterface;
 use Drupal\tmgmt\TranslatorInterface;
@@ -97,11 +98,27 @@ class TestTranslator extends TranslatorPluginBase implements TranslatorRejectDat
   /**
    * {@inheritdoc}
    */
-  function canTranslate(TranslatorInterface $translator, JobInterface $job) {
+  function checkTranslatable(TranslatorInterface $translator, JobInterface $job) {
     if ($job->getSetting('action') == 'not_translatable') {
-      return FALSE;
+      return TranslatableResult::no(t('@translator can not translate from @source to @target.', array(
+        '@translator' => $job->getTranslator()->label(),
+        '@source' => $job->getSourceLanguage()->getName(),
+        '@target' => $job->getTargetLanguage()->getName()
+      )));
     }
-    return parent::canTranslate($translator, $job);
+    return parent::checkTranslatable($translator, $job);
+  }
+  /**
+   * {@inheritdoc}
+   */
+  function checkAvailable(TranslatorInterface $translator) {
+    if ($translator->getSetting('action') == 'not_available') {
+      return AvailableResult::no(t('@translator is not available. Make sure it is properly <a href=:configured>configured</a>.', [
+        '@translator' => $translator->label(),
+        ':configured' => $translator->url()
+      ]));
+    }
+    return parent::checkAvailable($translator);
   }
 
   /**
diff --git a/tmgmt_test/src/TestTranslatorUi.php b/tmgmt_test/src/TestTranslatorUi.php
index fa073b3..ead146c 100644
--- a/tmgmt_test/src/TestTranslatorUi.php
+++ b/tmgmt_test/src/TestTranslatorUi.php
@@ -37,6 +37,7 @@ class TestTranslatorUi extends TranslatorPluginUiBase {
         'submit' => t('Submit'),
         'reject' => t('Reject'),
         'fail' => t('Fail'),
+        'not_available' => t('Not available'),
         'not_translatable' => t('Not translatable'),
       ),
     );
@@ -56,6 +57,7 @@ class TestTranslatorUi extends TranslatorPluginUiBase {
           'submit' => t('Submit'),
           'reject' => t('Reject'),
           'fail' => t('Fail'),
+          'not_available' => t('Not available'),
           'not_translatable' => t('Not translatable'),
         ),
         '#default_value' => $job->getTranslator()->getSetting('action'),
diff --git a/translators/tmgmt_file/src/Plugin/tmgmt/Translator/FileTranslator.php b/translators/tmgmt_file/src/Plugin/tmgmt/Translator/FileTranslator.php
index 3013e1e..1a5bc86 100644
--- a/translators/tmgmt_file/src/Plugin/tmgmt/Translator/FileTranslator.php
+++ b/translators/tmgmt_file/src/Plugin/tmgmt/Translator/FileTranslator.php
@@ -8,6 +8,7 @@
 namespace Drupal\tmgmt_file\Plugin\tmgmt\Translator;
 
 use Drupal\tmgmt\JobInterface;
+use Drupal\tmgmt\Translator\TranslatableResult;
 use Drupal\tmgmt\TranslatorInterface;
 use Drupal\tmgmt\TranslatorPluginBase;
 
@@ -26,9 +27,9 @@ class FileTranslator extends TranslatorPluginBase {
   /**
    * {@inheritdoc}
    */
-  public function canTranslate(TranslatorInterface $translator, JobInterface $job) {
+  public function checkTranslatable(TranslatorInterface $translator, JobInterface $job) {
     // Anything can be exported.
-    return TRUE;
+    return TranslatableResult::yes();
   }
 
   /**
