diff --git a/config/schema/tmgmt.schema.yml b/config/schema/tmgmt.schema.yml
index 2947c55..ac40ea7 100644
--- a/config/schema/tmgmt.schema.yml
+++ b/config/schema/tmgmt.schema.yml
@@ -39,11 +39,6 @@ tmgmt.translator.*:
       label: 'Translator plugin'
     settings:
       type: tmgmt.translator.settings.[%parent.plugin]
-    remote_languages_mappings:
-      type: sequence
-      sequence:
-        type: string
-        label: Language key
 
 views.access.tmgmt_job:
   type: mapping
@@ -55,3 +50,8 @@ tmgmt.translator_base:
     auto_accept:
       type: boolean
       label: Automatically accept
+    remote_languages_mappings:
+      type: sequence
+      sequence:
+        type: string
+        label: Language key
diff --git a/sources/content/src/Tests/ContentEntitySourceUiTest.php b/sources/content/src/Tests/ContentEntitySourceUiTest.php
index 54ef97c..4c7b7fa 100644
--- a/sources/content/src/Tests/ContentEntitySourceUiTest.php
+++ b/sources/content/src/Tests/ContentEntitySourceUiTest.php
@@ -101,9 +101,9 @@ class ContentEntitySourceUiTest extends EntityTestBase {
     $this->assertText(t('The translation for @title has been accepted.', array('@title' => $node->getTitle())));
 
     // German node should now be listed and be clickable.
-    $this->clickLink('de_' . $node->label());
-    $this->assertText('de_' . $node->getTitle());
-    $this->assertText('de_' . $node->body->value);
+    $this->clickLink('de-ch_' . $node->label());
+    $this->assertText('de-ch_' . $node->getTitle());
+    $this->assertText('de-ch_' . $node->body->value);
 
     // Test that the destination query argument does not break the redirect
     // and we are redirected back to the correct page.
@@ -237,8 +237,8 @@ class ContentEntitySourceUiTest extends EntityTestBase {
     // Translated nodes should now be listed and be clickable.
     // @todo Use links on translate tab.
     $this->drupalGet('de/node/' . $node->id());
-    $this->assertText('de_' . $node->getTitle());
-    $this->assertText('de_' . $node->body->value);
+    $this->assertText('de-ch_' . $node->getTitle());
+    $this->assertText('de-ch_' . $node->body->value);
 
     $this->drupalGet('es/node/' . $node->id());
     $this->assertText('es_' . $node->getTitle());
@@ -330,8 +330,8 @@ class ContentEntitySourceUiTest extends EntityTestBase {
     $this->assertText(t('The translation for @title has been accepted.', array('@title' => $comment->getSubject())));
 
     // The translated content should be in place.
-    $this->clickLink('de_' . $comment->getSubject());
-    $this->assertText('de_' . $comment->get('comment_body')->value);
+    $this->clickLink('de-ch_' . $comment->getSubject());
+    $this->assertText('de-ch_' . $comment->get('comment_body')->value);
     // @todo Remove when https://www.drupal.org/node/2444267 is fixed.
     \Drupal::entityManager()->getViewBuilder('node')->resetCache();
     $this->drupalGet('comment/1/translations');
diff --git a/src/Form/TranslatorForm.php b/src/Form/TranslatorForm.php
index cabb59c..1ef2359 100644
--- a/src/Form/TranslatorForm.php
+++ b/src/Form/TranslatorForm.php
@@ -233,6 +233,7 @@ class TranslatorForm extends EntityForm {
    */
   public function save(array $form, FormStateInterface $form_state) {
     $entity = $this->entity;
+    $entity->setSetting('remote_languages_mappings', $form_state->getValue('remote_languages_mappings'));
     $status = $entity->save();
 
     if ($status === SAVED_UPDATED) {
diff --git a/src/Tests/TranslatorTest.php b/src/Tests/TranslatorTest.php
index 3db34ef..b6c6d9e 100644
--- a/src/Tests/TranslatorTest.php
+++ b/src/Tests/TranslatorTest.php
@@ -125,4 +125,53 @@ class TranslatorTest extends TMGMTTestBase {
     $this->assertEqual($this->default_translator->mapToRemoteLanguage('de'), 'de');
   }
 
+  /**
+   * Test multiple local language with one single remote language.
+   */
+  protected function testMultipleLocalToSingleRemoteMapping() {
+    $this->addLanguage('pt-br');
+    $this->addLanguage('pt-pt');
+
+    // Add mapping to the file translator.
+    $edit = array(
+      'remote_languages_mappings[pt-br]' => 'pt',
+      'remote_languages_mappings[pt-pt]' => 'pt',
+    );
+    $this->drupalPostForm('admin/config/regional/tmgmt_translator/manage/test_translator', $edit, t('Save'));
+    $this->drupalGet('admin/config/regional/tmgmt_translator/manage/test_translator');
+    $this->assertFieldById('edit-remote-languages-mappings-pt-br', 'pt', 'Mapping saved correctly');
+
+    // Test first local language.
+    $job = tmgmt_job_match_item('en', 'pt-br');
+    $job->addItem('test_source', 'test', 0);
+    $edit = array(
+      'target_language' => 'pt-br',
+    );
+    $this->drupalPostAjaxForm('admin/tmgmt/jobs/' . $job->id(), $edit, 'target_language');
+    $this->assertFieldByXPath('//select[@id="edit-translator"]//option[@value="test_translator"]', t('Test translator (auto created)'), 'Translator maps correctly');
+    $this->drupalPostForm(NULL, $edit, t('Submit to translator'));
+    $this->assertText('Portuguese, Brazil');
+    $this->assertEqual(count($job->getItems()), 1);
+    $this->assertTrue($job->getItems()[1]->accepted());
+    $this->drupalGet('http://d8.dev/admin/tmgmt/items/' . 1);
+    $this->assertText('pt_Text for job item with type test and id 0.');
+    $this->assertEqual($job->getTargetLangcode(), 'pt-br');
+
+    // Test the other local language.
+    $job = tmgmt_job_match_item('en', 'pt-pt');
+    $job->addItem('test_source', 'test', 0);
+    $edit = array(
+      'target_language' => 'pt-pt',
+    );
+    $this->drupalPostAjaxForm('admin/tmgmt/jobs/' . $job->id(), $edit, 'target_language');
+    $this->assertFieldByXPath('//select[@id="edit-translator"]//option[@value="test_translator"]', t('Test translator (auto created)'), 'Translator maps correctly');
+    $this->drupalPostForm(NULL, $edit, t('Submit to translator'));
+    $this->assertText('Portuguese, Portugal');
+    $this->assertEqual(count($job->getItems()), 1);
+    $this->assertTrue($job->getItems()[2]->accepted());
+    $this->drupalGet('http://d8.dev/admin/tmgmt/items/' . 2);
+    $this->assertText('pt_Text for job item with type test and id 0.');
+    $this->assertEqual($job->getTargetLangcode(), 'pt-pt');
+  }
+
 }
diff --git a/tmgmt_test/config/schema/tmgmt_test.schema.yml b/tmgmt_test/config/schema/tmgmt_test.schema.yml
index ff8933f..c88fd3b 100644
--- a/tmgmt_test/config/schema/tmgmt_test.schema.yml
+++ b/tmgmt_test/config/schema/tmgmt_test.schema.yml
@@ -16,8 +16,3 @@ tmgmt.translator.settings.test_translator:
     another_key:
       type: string
       label: Another key
-    remote_languages_mappings:
-      type: sequence
-      sequence:
-        type: string
-        label: Language key
diff --git a/tmgmt_test/src/Plugin/tmgmt/Translator/TestTranslator.php b/tmgmt_test/src/Plugin/tmgmt/Translator/TestTranslator.php
index 9d6f6be..ed63a59 100644
--- a/tmgmt_test/src/Plugin/tmgmt/Translator/TestTranslator.php
+++ b/tmgmt_test/src/Plugin/tmgmt/Translator/TestTranslator.php
@@ -86,7 +86,7 @@ class TestTranslator extends TranslatorPluginBase implements TranslatorRejectDat
         $data = array_filter(\Drupal::service('tmgmt.data')->flatten($job->getData()), array(\Drupal::service('tmgmt.data'), 'filterData'));
         $tdata = array();
         foreach ($data as $key => $value) {
-          $tdata[$key]['#text'] = $job->getTargetLangcode() . '_' . $value['#text'];
+          $tdata[$key]['#text'] = $job->getRemoteTargetLanguage() . '_' . $value['#text'];
         }
         $job->submitted('Test translation created.');
         $job->addTranslatedData(\Drupal::service('tmgmt.data')->unflatten($tdata));
@@ -108,7 +108,7 @@ class TestTranslator extends TranslatorPluginBase implements TranslatorRejectDat
    * {@inheritdoc}
    */
   public function getSupportedTargetLanguages(TranslatorInterface $translator, $source_language) {
-    $languages = array('en', 'de', 'es', 'it', 'zh-hans', 'gsw-berne');
+    $languages = array('en', 'de', 'es', 'it', 'pt', 'zh-hans', 'gsw-berne');
     $languages = array_combine($languages, $languages);
     unset($languages[$source_language]);
     return $languages;
diff --git a/translators/tmgmt_file/src/Tests/FileTranslatorTest.php b/translators/tmgmt_file/src/Tests/FileTranslatorTest.php
index 54dfd32..52f2f41 100644
--- a/translators/tmgmt_file/src/Tests/FileTranslatorTest.php
+++ b/translators/tmgmt_file/src/Tests/FileTranslatorTest.php
@@ -322,8 +322,8 @@ class FileTranslatorTest extends TMGMTTestBase {
     // At this point we must have the "dummy" item accepted and intact. The
     // "another" item must have updated translation.
     $this->clickLink(t('review'));
-    $this->assertFieldByName('dummy|deep_nesting[translation]', 'de_' . $first_item_data['dummy][deep_nesting']['#text']);
-    $this->assertFieldByName('another_item[translation]', 'de_' . $first_item_data['another_item']['#text'] . ' updated');
+    $this->assertFieldByName('dummy|deep_nesting[translation]', 'de-ch_' . $first_item_data['dummy][deep_nesting']['#text']);
+    $this->assertFieldByName('another_item[translation]', 'de-ch_' . $first_item_data['another_item']['#text'] . ' updated');
 
     // Now finish the import/save as completed process doing another extra
     // import. The extra import will test that a duplicate import of the same
