diff --git a/config/schema/tmgmt.schema.yml b/config/schema/tmgmt.schema.yml
index aeba2da..2947c55 100644
--- a/config/schema/tmgmt.schema.yml
+++ b/config/schema/tmgmt.schema.yml
@@ -38,7 +38,12 @@ tmgmt.translator.*:
       type: string
       label: 'Translator plugin'
     settings:
-        type: tmgmt.translator.settings.[%parent.plugin]
+      type: tmgmt.translator.settings.[%parent.plugin]
+    remote_languages_mappings:
+      type: sequence
+      sequence:
+        type: string
+        label: Language key
 
 views.access.tmgmt_job:
   type: mapping
@@ -50,8 +55,3 @@ tmgmt.translator_base:
     auto_accept:
       type: boolean
       label: Automatically accept
-    remote_languages_mappings:
-      type: sequence
-      sequence:
-        type: string
-        label: Language key
diff --git a/src/Form/TranslatorForm.php b/src/Form/TranslatorForm.php
index eb5db06..e30b66e 100644
--- a/src/Form/TranslatorForm.php
+++ b/src/Form/TranslatorForm.php
@@ -157,6 +157,47 @@ class TranslatorForm extends EntityForm {
       $plugin_ui = $this->translatorManager->createUIInstance($entity->getPluginID());
       $form['plugin_wrapper']['settings'] += $plugin_ui->pluginSettingsForm($form['plugin_wrapper']['settings'], $form_state, $entity, $busy);
     }
+
+    /** @todo Add here the form */
+
+    $controller = $entity->getPlugin();
+
+    // If current translator is configured to provide remote language mapping
+    // provide the form to configure mappings, unless it does not exists yet.
+    if (!empty($controller) && $entity->providesRemoteLanguageMappings()) {
+
+      $form['remote_languages_mappings'] = array(
+        '#tree' => TRUE,
+        '#type' => 'details',
+        '#title' => t('Remote languages mappings'),
+        '#description' => t('Here you can specify mappings of your local language codes to the translator language codes.'),
+        '#open' => TRUE,
+      );
+
+      $options = array();
+      foreach ($controller->getSupportedRemoteLanguages($entity) as $language) {
+        $options[$language] = $language;
+      }
+
+      foreach ($entity->getRemoteLanguagesMappings() as $local_language => $remote_language) {
+        $form['remote_languages_mappings'][$local_language] = array(
+          '#type' => 'textfield',
+          '#title' => \Drupal::languageManager()->getLanguage($local_language)->getName() . ' (' . $local_language . ')',
+          '#default_value' => $remote_language,
+          '#size' => 6,
+        );
+
+        if (!empty($options)) {
+          $form['remote_languages_mappings'][$local_language]['#type'] = 'select';
+          $form['remote_languages_mappings'][$local_language]['#options'] = $options;
+          $form['remote_languages_mappings'][$local_language]['#empty_option'] = ' - ';
+          unset($form['remote_languages_mappings'][$local_language]['#size']);
+        }
+      }
+    }
+
+    // and all related from translatorpluginuibase
+
     // Add a submit button and a cancel link to the form.
     $form['actions']['#type'] = 'actions';
     $form['actions']['submit'] = array(
diff --git a/src/Tests/PluginsTest.php b/src/Tests/PluginsTest.php
index bf1650b..745964d 100644
--- a/src/Tests/PluginsTest.php
+++ b/src/Tests/PluginsTest.php
@@ -137,36 +137,6 @@ class PluginsTest extends TMGMTKernelTestBase {
   }
 
   /**
-   * Tests remote languages mappings support in the tmgmt core.
-   */
-  function testRemoteLanguagesMappings() {
-    $this->addLanguage('en');
-
-    $mappings = $this->default_translator->getRemoteLanguagesMappings();
-    $this->assertEqual($mappings, array(
-      'en' => 'en-us',
-      'de' => 'de-ch',
-    ));
-
-    $this->assertEqual($this->default_translator->mapToRemoteLanguage('en'), 'en-us');
-    $this->assertEqual($this->default_translator->mapToRemoteLanguage('de'), 'de-ch');
-
-    $this->default_translator->setSetting(['remote_languages_mappings', 'de'], 'de-de');
-    $this->default_translator->setSetting(['remote_languages_mappings', 'en'], 'en-uk');
-    $this->default_translator->save();
-
-    $this->assertEqual($this->default_translator->mapToRemoteLanguage('en'), 'en-uk');
-    $this->assertEqual($this->default_translator->mapToRemoteLanguage('de'), 'de-de');
-
-    // Test the fallback.
-    $this->container->get('state')->set('tmgmt_test_translator_map_languages', FALSE);
-    $this->container->get('plugin.manager.tmgmt.translator')->clearCachedDefinitions();
-
-    $this->assertEqual($this->default_translator->mapToRemoteLanguage('en'), 'en');
-    $this->assertEqual($this->default_translator->mapToRemoteLanguage('de'), 'de');
-  }
-
-  /**
    * Tests escaping and unescaping text.
    */
   function testEscaping() {
diff --git a/src/Tests/TranslatorTest.php b/src/Tests/TranslatorTest.php
index 628f596..1515d93 100644
--- a/src/Tests/TranslatorTest.php
+++ b/src/Tests/TranslatorTest.php
@@ -88,4 +88,34 @@ class TranslatorTest extends TMGMTTestBase {
     $this->assertText(t('There are no translator plugins available. Please install a translator plugin.'));
   }
 
+  /**
+   * Tests remote languages mappings support in the tmgmt core.
+   */
+  protected function testRemoteLanguagesMappings() {
+    $mappings = $this->default_translator->getRemoteLanguagesMappings();
+    $this->assertEqual($mappings, array(
+      'en' => 'en-us',
+      'de' => 'de-ch',
+      'el' => 'el',
+      'es' => 'es',
+    ));
+
+    $this->assertEqual($this->default_translator->mapToRemoteLanguage('en'), 'en-us');
+    $this->assertEqual($this->default_translator->mapToRemoteLanguage('de'), 'de-ch');
+
+    $this->default_translator->setSetting(['remote_languages_mappings', 'de'], 'de-de');
+    $this->default_translator->setSetting(['remote_languages_mappings', 'en'], 'en-uk');
+    $this->default_translator->save();
+
+    $this->assertEqual($this->default_translator->mapToRemoteLanguage('en'), 'en-uk');
+    $this->assertEqual($this->default_translator->mapToRemoteLanguage('de'), 'de-de');
+
+    // Test the fallback.
+    $this->container->get('state')->set('tmgmt_test_translator_map_languages', FALSE);
+    $this->container->get('plugin.manager.tmgmt.translator')->clearCachedDefinitions();
+
+    $this->assertEqual($this->default_translator->mapToRemoteLanguage('en'), 'en');
+    $this->assertEqual($this->default_translator->mapToRemoteLanguage('de'), 'de');
+  }
+
 }
diff --git a/src/TranslatorPluginBase.php b/src/TranslatorPluginBase.php
index f3b8813..d7f6291 100644
--- a/src/TranslatorPluginBase.php
+++ b/src/TranslatorPluginBase.php
@@ -19,8 +19,6 @@ use Drupal\tmgmt\Entity\Translator;
  */
 abstract class TranslatorPluginBase extends PluginBase implements TranslatorPluginInterface {
 
-  protected $supportedRemoteLanguages = array();
-
   /**
    * Characters that indicate the beginning of an escaped string.
    *
diff --git a/src/TranslatorPluginUiBase.php b/src/TranslatorPluginUiBase.php
index 08906e0..6f30b58 100644
--- a/src/TranslatorPluginUiBase.php
+++ b/src/TranslatorPluginUiBase.php
@@ -25,42 +25,6 @@ class TranslatorPluginUiBase extends ComponentPluginBase implements TranslatorPl
    * {@inheritdoc}
    */
   public function pluginSettingsForm(array $form, FormStateInterface $form_state, TranslatorInterface $translator, $busy = FALSE) {
-
-    $plugin = $translator->getPlugin();
-    // If current translator is configured to provide remote language mapping
-    // provide the form to configure mappings, unless it does not exists yet.
-    if (!empty($plugin) && $translator->providesRemoteLanguageMappings()) {
-
-      $form['remote_languages_mappings'] = array(
-        '#tree' => TRUE,
-        '#type' => 'details',
-        '#title' => t('Remote languages mappings'),
-        '#description' => t('Here you can specify mappings of your local language codes to the translator language codes.'),
-        '#open' => TRUE,
-      );
-
-      $options = array();
-      foreach ($plugin->getSupportedRemoteLanguages($translator) as $language) {
-        $options[$language] = $language;
-      }
-
-      foreach ($translator->getRemoteLanguagesMappings() as $local_language => $remote_language) {
-        $form['remote_languages_mappings'][$local_language] = array(
-          '#type' => 'textfield',
-          '#title' => \Drupal::languageManager()->getLanguage($local_language)->getName() . ' (' . $local_language . ')',
-          '#default_value' => $remote_language,
-          '#size' => 6,
-        );
-
-        if (!empty($options)) {
-          $form['remote_languages_mappings'][$local_language]['#type'] = 'select';
-          $form['remote_languages_mappings'][$local_language]['#options'] = $options;
-          $form['remote_languages_mappings'][$local_language]['#empty_option'] = ' - ';
-          unset($form['remote_languages_mappings'][$local_language]['#size']);
-        }
-      }
-    }
-
     if (!Element::children($form)) {
       $form['#description'] = t("The @plugin plugin doesn't provide any settings.", array('@plugin' => $this->pluginDefinition['label']));
     }
diff --git a/tmgmt_test/config/schema/tmgmt_test.schema.yml b/tmgmt_test/config/schema/tmgmt_test.schema.yml
index c88fd3b..ff8933f 100644
--- a/tmgmt_test/config/schema/tmgmt_test.schema.yml
+++ b/tmgmt_test/config/schema/tmgmt_test.schema.yml
@@ -16,3 +16,8 @@ tmgmt.translator.settings.test_translator:
     another_key:
       type: string
       label: Another key
+    remote_languages_mappings:
+      type: sequence
+      sequence:
+        type: string
+        label: Language key
