diff --git a/core/modules/config_translation/migration_templates/d6_i18n_system_maintenance.yml b/core/modules/config_translation/migration_templates/d6_system_maintenance_translation.yml
similarity index 80%
rename from core/modules/config_translation/migration_templates/d6_i18n_system_maintenance.yml
rename to core/modules/config_translation/migration_templates/d6_system_maintenance_translation.yml
index 8f1076744d..e3aa7f17a0 100644
--- a/core/modules/config_translation/migration_templates/d6_i18n_system_maintenance.yml
+++ b/core/modules/config_translation/migration_templates/d6_system_maintenance_translation.yml
@@ -1,9 +1,9 @@
-id: d6_i18n_system_maintenance
+id: d6_system_maintenance_translation
 label: Maintenance page configuration
 migration_tags:
   - Drupal 6
 source:
-  plugin: i18n_variable
+  plugin: variable_translation
   variables:
     - site_offline_message
   source_module: i18n
diff --git a/core/modules/config_translation/migration_templates/d6_i18n_system_site.yml b/core/modules/config_translation/migration_templates/d6_system_site_translation.yml
similarity index 91%
rename from core/modules/config_translation/migration_templates/d6_i18n_system_site.yml
rename to core/modules/config_translation/migration_templates/d6_system_site_translation.yml
index f54e1b8689..f967f98df9 100644
--- a/core/modules/config_translation/migration_templates/d6_i18n_system_site.yml
+++ b/core/modules/config_translation/migration_templates/d6_system_site_translation.yml
@@ -1,9 +1,9 @@
-id: d6_i18n_system_site
+id: d6_system_site_translation
 label: Site configuration
 migration_tags:
   - Drupal 6
 source:
-  plugin: i18n_variable
+  plugin: variable_translation
   constants:
     slash: '/'
   variables:
diff --git a/core/modules/config_translation/migration_templates/d6_i18n_user_mail.yml b/core/modules/config_translation/migration_templates/d6_user_mail_translation.yml
similarity index 97%
rename from core/modules/config_translation/migration_templates/d6_i18n_user_mail.yml
rename to core/modules/config_translation/migration_templates/d6_user_mail_translation.yml
index d6e6063948..450df517d0 100644
--- a/core/modules/config_translation/migration_templates/d6_i18n_user_mail.yml
+++ b/core/modules/config_translation/migration_templates/d6_user_mail_translation.yml
@@ -1,9 +1,9 @@
-id: d6_i18n_user_mail
+id: d6_user_mail_translation
 label: User mail configuration
 migration_tags:
   - Drupal 6
 source:
-  plugin: i18n_variable
+  plugin: variable_translation
   variables:
     - user_mail_status_activated_subject
     - user_mail_status_activated_body
diff --git a/core/modules/config_translation/migration_templates/d6_i18n_user_profile_field_instance.yml b/core/modules/config_translation/migration_templates/d6_user_profile_field_instance_translation.yml
similarity index 87%
rename from core/modules/config_translation/migration_templates/d6_i18n_user_profile_field_instance.yml
rename to core/modules/config_translation/migration_templates/d6_user_profile_field_instance_translation.yml
index f2c6f95f3e..5a3d7cc41e 100644
--- a/core/modules/config_translation/migration_templates/d6_i18n_user_profile_field_instance.yml
+++ b/core/modules/config_translation/migration_templates/d6_user_profile_field_instance_translation.yml
@@ -1,9 +1,9 @@
-id: d6_i18n_user_profile_field_instance
+id: d6_user_profile_field_instance_translation
 label: User profile field instance configuration
 migration_tags:
   - Drupal 6
 source:
-  plugin: d6_i18n_profile_field
+  plugin: d6_profile_field_translation
   constants:
     entity_type: user
     bundle: user
diff --git a/core/modules/config_translation/migration_templates/d6_i18n_user_settings.yml b/core/modules/config_translation/migration_templates/d6_user_settings_translation.yml
similarity index 91%
rename from core/modules/config_translation/migration_templates/d6_i18n_user_settings.yml
rename to core/modules/config_translation/migration_templates/d6_user_settings_translation.yml
index 8fc7bf4e7d..21822206fd 100644
--- a/core/modules/config_translation/migration_templates/d6_i18n_user_settings.yml
+++ b/core/modules/config_translation/migration_templates/d6_user_settings_translation.yml
@@ -1,9 +1,9 @@
-id: d6_i18n_user_settings
+id: d6_user_settings_translation
 label: User configuration
 migration_tags:
   - Drupal 6
 source:
-  plugin: i18n_variable
+  plugin: variable_translation
   variables:
     - user_mail_status_blocked_notify
     - user_mail_status_activated_notify
diff --git a/core/modules/config_translation/src/Plugin/migrate/source/d6/I18nProfileField.php b/core/modules/config_translation/src/Plugin/migrate/source/d6/I18nProfileField.php
index 76321c2234..c27f1d5674 100644
--- a/core/modules/config_translation/src/Plugin/migrate/source/d6/I18nProfileField.php
+++ b/core/modules/config_translation/src/Plugin/migrate/source/d6/I18nProfileField.php
@@ -2,7 +2,7 @@
 
 namespace Drupal\config_translation\Plugin\migrate\source\d6;
 
-use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase;
+@trigger_error('The ' . __NAMESPACE__ . '\I18nProfileField is deprecated in Drupal 8.4.0 and will be removed before Drupal 9.0.0. Instead, use ' . __NAMESPACE__ . '\ProfileFieldTranslation', E_USER_DEPRECATED);
 
 /**
  * i18n strings profile field source from database.
@@ -11,43 +11,11 @@
  *   id = "d6_i18n_profile_field",
  *   source_module = "i18nprofile"
  * )
+ *
+ * @deprecated in Drupal 8.4.x and will be removed in Drupal 9.0.x. Use
+ * \Drupal\config_translation\Plugin\migrate\source\d6\ProfileFieldTranslation
+ * instead.
+ *
+ * @see https://www.drupal.org/node/2898649
  */
-class I18nProfileField extends DrupalSqlBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function query() {
-    $query = $this->select('profile_fields', 'pf')
-      ->fields('pf', ['fid', 'name'])
-      ->fields('i18n', ['property'])
-      ->fields('lt', ['lid', 'translation', 'language']);
-    $query->leftJoin('i18n_strings', 'i18n', 'i18n.objectid = pf.name');
-    $query->leftJoin('locales_target', 'lt', 'lt.lid = i18n.lid');
-    return $query;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function fields() {
-    return [
-      'fid' => $this->t('Profile field ID.'),
-      'lid' => $this->t('Locales target language ID.'),
-      'language' => $this->t('Language for this field.'),
-      'translation' => $this->t('Translation of either the title or explanation.'),
-    ];
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getIds() {
-    $ids['fid']['type'] = 'integer';
-    $ids['language']['type'] = 'string';
-    $ids['lid']['type'] = 'integer';
-    $ids['lid']['alias'] = 'lt';
-    return $ids;
-  }
-
-}
+class I18nProfileField extends ProfileFieldTranslation {}
diff --git a/core/modules/config_translation/src/Plugin/migrate/source/d6/I18nProfileField.php b/core/modules/config_translation/src/Plugin/migrate/source/d6/ProfileFieldTranslation.php
similarity index 90%
copy from core/modules/config_translation/src/Plugin/migrate/source/d6/I18nProfileField.php
copy to core/modules/config_translation/src/Plugin/migrate/source/d6/ProfileFieldTranslation.php
index 76321c2234..47af621d44 100644
--- a/core/modules/config_translation/src/Plugin/migrate/source/d6/I18nProfileField.php
+++ b/core/modules/config_translation/src/Plugin/migrate/source/d6/ProfileFieldTranslation.php
@@ -8,11 +8,11 @@
  * i18n strings profile field source from database.
  *
  * @MigrateSource(
- *   id = "d6_i18n_profile_field",
- *   source_module = "i18nprofile"
+ *   id = "d6_profile_field_translation",
+ *   source_provider = "i18n"
  * )
  */
-class I18nProfileField extends DrupalSqlBase {
+class ProfileFieldTranslation extends DrupalSqlBase {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateI18nSystemMaintenanceTest.php b/core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateSystemMaintenanceTranslationTest.php
similarity index 82%
rename from core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateI18nSystemMaintenanceTest.php
rename to core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateSystemMaintenanceTranslationTest.php
index d1c586715a..37cd4a9ec2 100644
--- a/core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateI18nSystemMaintenanceTest.php
+++ b/core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateSystemMaintenanceTranslationTest.php
@@ -8,8 +8,9 @@
  * Upgrade i18n maintenance variables to system.*.yml.
  *
  * @group migrate_drupal_6
+ * @group legacy
  */
-class MigrateI18nSystemMaintenanceTest extends MigrateDrupal6TestBase {
+class MigrateSystemMaintenanceTranslationTest extends MigrateDrupal6TestBase {
 
   public static $modules = ['language', 'config_translation'];
 
@@ -18,7 +19,7 @@ class MigrateI18nSystemMaintenanceTest extends MigrateDrupal6TestBase {
    */
   protected function setUp() {
     parent::setUp();
-    $this->executeMigration('d6_i18n_system_maintenance');
+    $this->executeMigration('d6_system_maintenance_translation');
   }
 
   /**
diff --git a/core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateI18nSystemSiteTest.php b/core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateSystemSiteTranslationTest.php
similarity index 92%
rename from core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateI18nSystemSiteTest.php
rename to core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateSystemSiteTranslationTest.php
index 770b33ca11..326e1bb7e4 100644
--- a/core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateI18nSystemSiteTest.php
+++ b/core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateSystemSiteTranslationTest.php
@@ -8,8 +8,9 @@
  * Upgrade i18n_strings site variables to system.*.yml.
  *
  * @group migrate_drupal_6
+ * @group legacy
  */
-class MigrateI18nSystemSiteTest extends MigrateDrupal6TestBase {
+class MigrateSystemSiteTranslationTest extends MigrateDrupal6TestBase {
 
   public static $modules = ['language', 'config_translation'];
 
@@ -18,7 +19,7 @@ class MigrateI18nSystemSiteTest extends MigrateDrupal6TestBase {
    */
   protected function setUp() {
     parent::setUp();
-    $this->executeMigration('d6_i18n_system_site');
+    $this->executeMigration('d6_system_site_translation');
   }
 
   /**
diff --git a/core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateI18nUserConfigsTest.php b/core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateUserConfigsTranslationTest.php
similarity index 97%
rename from core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateI18nUserConfigsTest.php
rename to core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateUserConfigsTranslationTest.php
index f48e44ff48..bc622e1b6a 100644
--- a/core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateI18nUserConfigsTest.php
+++ b/core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateUserConfigsTranslationTest.php
@@ -9,8 +9,9 @@
  * Upgrade i18n variables to user.*.yml.
  *
  * @group migrate_drupal_6
+ * @group legacy
  */
-class MigrateI18nUserConfigsTest extends MigrateDrupal6TestBase {
+class MigrateUserConfigsTranslationTest extends MigrateDrupal6TestBase {
 
   use SchemaCheckTestTrait;
 
@@ -23,7 +24,7 @@ protected function setUp() {
     parent::setUp();
     $this->installSchema('locale',
       ['locales_source', 'locales_target', 'locales_location']);
-    $this->executeMigrations(['d6_i18n_user_mail', 'd6_i18n_user_settings']);
+    $this->executeMigrations(['d6_user_mail_translation', 'd6_user_settings_translation']);
   }
 
   /**
diff --git a/core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateI18nUserProfileFieldInstanceTest.php b/core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateUserProfileFieldInstanceTranslationTest.php
similarity index 95%
rename from core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateI18nUserProfileFieldInstanceTest.php
rename to core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateUserProfileFieldInstanceTranslationTest.php
index 057c14af49..01d5ec929d 100644
--- a/core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateI18nUserProfileFieldInstanceTest.php
+++ b/core/modules/config_translation/tests/src/Kernel/Migrate/d6/MigrateUserProfileFieldInstanceTranslationTest.php
@@ -8,8 +8,9 @@
  * Tests the user profile field instance migration.
  *
  * @group migrate_drupal_6
+ * @group legacy
  */
-class MigrateI18nUserProfileFieldInstanceTest extends MigrateDrupal6TestBase {
+class MigrateUserProfileFieldInstanceTranslationTest extends MigrateDrupal6TestBase {
 
   /**
    * {@inheritdoc}
@@ -23,7 +24,7 @@ public function testUserProfileFields() {
     $this->executeMigrations([
       'user_profile_field',
       'user_profile_field_instance',
-      'd6_i18n_user_profile_field_instance',
+      'd6_user_profile_field_instance_translation',
     ]);
     $language_manager = $this->container->get('language_manager');
 
diff --git a/core/modules/config_translation/tests/src/Kernel/Plugin/migrate/source/d6/I18nProfileFieldTest.php b/core/modules/config_translation/tests/src/Kernel/Plugin/migrate/source/d6/I18nProfileFieldTest.php
index bd8d451d18..b783accf97 100644
--- a/core/modules/config_translation/tests/src/Kernel/Plugin/migrate/source/d6/I18nProfileFieldTest.php
+++ b/core/modules/config_translation/tests/src/Kernel/Plugin/migrate/source/d6/I18nProfileFieldTest.php
@@ -9,6 +9,7 @@
  *
  * @covers \Drupal\config_translation\Plugin\migrate\source\d6\I18nProfileField
  * @group migrate_drupal
+ * @group legacy
  */
 class I18nProfileFieldTest extends MigrateSqlSourceTestBase {
 
diff --git a/core/modules/config_translation/tests/src/Kernel/Plugin/migrate/source/d6/I18nProfileFieldTest.php b/core/modules/config_translation/tests/src/Kernel/Plugin/migrate/source/d6/ProfileFieldTranslationTest.php
similarity index 92%
copy from core/modules/config_translation/tests/src/Kernel/Plugin/migrate/source/d6/I18nProfileFieldTest.php
copy to core/modules/config_translation/tests/src/Kernel/Plugin/migrate/source/d6/ProfileFieldTranslationTest.php
index bd8d451d18..02cdd9909c 100644
--- a/core/modules/config_translation/tests/src/Kernel/Plugin/migrate/source/d6/I18nProfileFieldTest.php
+++ b/core/modules/config_translation/tests/src/Kernel/Plugin/migrate/source/d6/ProfileFieldTranslationTest.php
@@ -7,10 +7,10 @@
 /**
  * Tests the i18nProfileField source plugin.
  *
- * @covers \Drupal\config_translation\Plugin\migrate\source\d6\I18nProfileField
+ * @covers \Drupal\config_translation\Plugin\migrate\source\d6\ProfileFieldTranslation
  * @group migrate_drupal
  */
-class I18nProfileFieldTest extends MigrateSqlSourceTestBase {
+class ProfileFieldTranslationTest extends MigrateSqlSourceTestBase {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/i18nVariable.php b/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/VariableTranslation.php
similarity index 96%
copy from core/modules/migrate_drupal/src/Plugin/migrate/source/d6/i18nVariable.php
copy to core/modules/migrate_drupal/src/Plugin/migrate/source/d6/VariableTranslation.php
index 93832aa75b..566a8402e0 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/i18nVariable.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/VariableTranslation.php
@@ -11,10 +11,10 @@
  * Drupal i18n_variable source from database.
  *
  * @MigrateSource(
- *   id = "i18n_variable"
+ *   id = "variable_translation"
  * )
  */
-class i18nVariable extends DrupalSqlBase {
+class VariableTranslation extends DrupalSqlBase {
 
   /**
    * The variable names to fetch.
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/i18nVariable.php b/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/i18nVariable.php
index 93832aa75b..dd8d0f0741 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/i18nVariable.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/i18nVariable.php
@@ -2,10 +2,7 @@
 
 namespace Drupal\migrate_drupal\Plugin\migrate\source\d6;
 
-use Drupal\Core\Entity\EntityManagerInterface;
-use Drupal\Core\State\StateInterface;
-use Drupal\migrate\Plugin\MigrationInterface;
-use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase;
+@trigger_error('The ' . __NAMESPACE__ . '\i18nVariable is deprecated in Drupal 8.4.0 and will be removed before Drupal 9.0.0. Instead, use ' . __NAMESPACE__ . '\VariableTranslation', E_USER_DEPRECATED);
 
 /**
  * Drupal i18n_variable source from database.
@@ -13,88 +10,10 @@
  * @MigrateSource(
  *   id = "i18n_variable"
  * )
+ *
+ * @deprecated in Drupal 8.4.x and will be removed in Drupal 9.0.x. Use
+ * \Drupal\migrate_drupal\Plugin\migrate\source\d6\VariableTranslation instead.
+ *
+ * @see https://www.drupal.org/node/2898649
  */
-class i18nVariable extends DrupalSqlBase {
-
-  /**
-   * The variable names to fetch.
-   *
-   * @var array
-   */
-  protected $variables;
-
-  /**
-   * {@inheritdoc}
-   */
-  public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, StateInterface $state, EntityManagerInterface $entity_manager) {
-    parent::__construct($configuration, $plugin_id, $plugin_definition, $migration, $state, $entity_manager);
-    $this->variables = $this->configuration['variables'];
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function initializeIterator() {
-    return new \ArrayIterator($this->values());
-  }
-
-  /**
-   * Return the values of the variables specified in the plugin configuration.
-   *
-   * @return array
-   *   An associative array where the keys are the variables specified in the
-   *   plugin configuration and the values are the values found in the source.
-   *   A key/value pair is added for the language code. Only those values are
-   *   returned that are actually in the database.
-   */
-  protected function values() {
-    $values = [];
-    $result = $this->prepareQuery()->execute()->FetchAllAssoc('language');
-    foreach ($result as $i18n_variable) {
-      $values[]['language'] = $i18n_variable->language;
-    }
-    $result = $this->prepareQuery()->execute()->FetchAll();
-    foreach ($result as $i18n_variable) {
-      foreach ($values as $key => $value) {
-        if ($values[$key]['language'] === $i18n_variable->language) {
-          $values[$key][$i18n_variable->name] = unserialize($i18n_variable->value);
-          break;
-        }
-      }
-    }
-    return $values;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function count() {
-    return $this->initializeIterator()->count();
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function fields() {
-    return array_combine($this->variables, $this->variables);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function query() {
-    return $this->getDatabase()
-      ->select('i18n_variable', 'v')
-      ->fields('v')
-      ->condition('name', (array) $this->configuration['variables'], 'IN');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getIds() {
-    $ids['language']['type'] = 'string';
-    return $ids;
-  }
-
-}
+class i18nVariable extends VariableTranslation {}
diff --git a/core/modules/migrate_drupal/tests/src/Unit/source/d6/i18nVariableTest.php b/core/modules/migrate_drupal/tests/src/Unit/source/d6/VariableTranslationTest.php
similarity index 91%
copy from core/modules/migrate_drupal/tests/src/Unit/source/d6/i18nVariableTest.php
copy to core/modules/migrate_drupal/tests/src/Unit/source/d6/VariableTranslationTest.php
index 06059cfd53..152706798c 100644
--- a/core/modules/migrate_drupal/tests/src/Unit/source/d6/i18nVariableTest.php
+++ b/core/modules/migrate_drupal/tests/src/Unit/source/d6/VariableTranslationTest.php
@@ -9,11 +9,11 @@
  *
  * @group migrate_drupal
  */
-class i18nVariableTest extends MigrateSqlSourceTestCase {
+class VariableTranslationTest extends MigrateSqlSourceTestCase {
 
   // The plugin system is not working during unit testing so the source plugin
   // class needs to be manually specified.
-  const PLUGIN_CLASS = 'Drupal\migrate_drupal\Plugin\migrate\source\d6\i18nVariable';
+  const PLUGIN_CLASS = 'Drupal\migrate_drupal\Plugin\migrate\source\d6\VariableTranslation';
 
   /**
    * Define bare minimum migration configuration.
@@ -22,7 +22,7 @@ class i18nVariableTest extends MigrateSqlSourceTestCase {
     'id' => 'test',
     'highWaterProperty' => ['field' => 'test'],
     'source' => [
-      'plugin' => 'i18n_variable',
+      'plugin' => 'variable_translation',
       'variables' => [
         'site_slogan',
         'site_name',
diff --git a/core/modules/migrate_drupal/tests/src/Unit/source/d6/i18nVariableTest.php b/core/modules/migrate_drupal/tests/src/Unit/source/d6/i18nVariableTest.php
index 06059cfd53..d1905b0e6c 100644
--- a/core/modules/migrate_drupal/tests/src/Unit/source/d6/i18nVariableTest.php
+++ b/core/modules/migrate_drupal/tests/src/Unit/source/d6/i18nVariableTest.php
@@ -8,6 +8,7 @@
  * Tests the variable source plugin.
  *
  * @group migrate_drupal
+ * @group legacy
  */
 class i18nVariableTest extends MigrateSqlSourceTestCase {
 
