diff --git a/core/modules/config_translation/migration_templates/i18n_d6_block.yml b/core/modules/config_translation/migration_templates/i18n_d6_block.yml
new file mode 100644
index 0000000..d8ae33d
--- /dev/null
+++ b/core/modules/config_translation/migration_templates/i18n_d6_block.yml
@@ -0,0 +1,75 @@
+id: d6_i18n_block
+label: Blocks
+migration_tags:
+  - Drupal 6
+source:
+  plugin: d6_i18n_block
+process:
+  # Block status is not a thing in Drupal 8, so this is how we skip over
+  # disabled blocks.
+  id:
+    -
+      plugin: concat
+      source:
+        - module
+        - objectid
+      delimiter: _
+    -
+      plugin: substr
+      length: 32
+  plugin:
+    -
+      plugin: static_map
+      bypass: true
+      source:
+        - module
+        - delta
+      map:
+        book:
+          0: book_navigation
+        comment:
+          0: views_block:comments_recent-block_1
+        forum:
+          0: forum_active_block
+          1: forum_new_block
+        locale:
+          0: language_block
+        node:
+          0: node_syndicate_block
+        search:
+          0: search_form_block
+        statistics:
+          0: statistics_popular_block
+        system:
+          0: system_powered_by_block
+        user:
+          0: user_login_block
+          1: system_menu_block:tools
+          2: views_block:who_s_new-block_1
+          3: views_block:who_s_online-who_s_online_block
+    -
+      plugin: block_plugin_id
+    -
+      plugin: skip_on_empty
+      method: row
+  theme:
+    plugin: block_theme
+    source:
+      - theme
+      - default_theme
+      - admin_theme
+  langcode: language
+  property:
+    plugin: static_map
+    source: property
+    map:
+      title: label
+      body: body
+  translation: translation
+destination:
+  plugin: entity:block
+migration_dependencies:
+  required:
+    - menu
+    - d6_custom_block
+    - d6_user_role
diff --git a/core/modules/config_translation/src/Plugin/migrate/source/d6/I18nBlock.php b/core/modules/config_translation/src/Plugin/migrate/source/d6/I18nBlock.php
new file mode 100644
index 0000000..75099dc
--- /dev/null
+++ b/core/modules/config_translation/src/Plugin/migrate/source/d6/I18nBlock.php
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\config_translation\Plugin\migrate\source\d6\I18nBlock.
+ */
+
+namespace Drupal\config_translation\Plugin\migrate\source\d6;
+
+use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase;
+use Drupal\migrate\Row;
+
+/**
+ * Profile field source from database.
+ *
+ * @MigrateSource(
+ *   id = "d6_i18n_block",
+ *   source_provider = "block"
+ * )
+ */
+class i18nBlock extends DrupalSqlBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function query() {
+    $query = $this->select('i18n_strings', 'i18n')
+      ->fields('i18n', array('lid', 'type', 'property', 'objectid'))
+      ->fields('lt', array('lid', 'language', 'translation'))
+      ->fields('b', array('bid', 'module', 'delta'))
+      ->condition('i18n.type', 'block');
+    $query->leftJoin('blocks', 'b', 'b.bid = i18n.objectid');
+    $query->leftJoin('locales_target', 'lt', 'lt.lid = i18n.lid');
+    return $query;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function fields() {
+    return array(
+      'bid' => $this->t('The block numeric identifier.'),
+      'module' => $this->t('The module providing the block.'),
+      'delta' => $this->t('The block\'s delta.'),
+      'theme' => $this->t('Which theme the block is placed in.'),
+      'status' => $this->t('Whether or not the block is enabled.'),
+      'language' => $this->t('Language for this field.'),
+      'property' => $this->t('Name of property being translated.'),
+      'translation' => $this->t('Translation of either the title or explanation.'));
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getIds() {
+    $ids['bid']['type'] = 'integer';
+    $ids['type']['type'] = 'string';
+    return $ids;
+  }
+
+}
diff --git a/core/modules/config_translation/src/Tests/Migrate/d6/MigrateI18nBlockTest.php b/core/modules/config_translation/src/Tests/Migrate/d6/MigrateI18nBlockTest.php
new file mode 100644
index 0000000..f9d178e
--- /dev/null
+++ b/core/modules/config_translation/src/Tests/Migrate/d6/MigrateI18nBlockTest.php
@@ -0,0 +1,74 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\config_translation\Tests\Migrate\d6\MigrateI18nBlockTest.
+ */
+
+namespace Drupal\config_translation\Tests\Migrate\d6;
+
+use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
+
+/**
+ * Tests the user profile field instance migration.
+ *
+ * @group migrate_drupal_6
+ */
+class MigrateI18nBlockTest extends MigrateDrupal6TestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = [
+    'block',
+    'views',
+    'comment',
+    'menu_ui',
+    'block_content',
+    'config_translation',
+    'locale',
+    'language',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installConfig(['block_content']);
+    $this->installEntitySchema('block_content');
+
+    // Set Bartik and Seven as the default public and admin theme.
+    $config = $this->config('system.theme');
+    $config->set('default', 'bartik');
+    $config->set('admin', 'seven');
+    $config->save();
+
+    // Install one of D8's test themes.
+    \Drupal::service('theme_handler')->install(['test_theme']);
+
+    $this->executeMigrations([
+      'd6_filter_format',
+      'block_content_type',
+      'block_content_body_field',
+      'd6_custom_block',
+      'menu',
+      'd6_user_role',
+      'd6_block',
+ //     'd6_i18n_block',
+    ]);
+
+    $this->executeMigration('d6_i18n_block');
+  }
+
+  /**
+   * Tests the Drupal 6 taxonomy vocabularies to Drupal 8 migration.
+   */
+  public function testI18nBlock() {
+    $config = \Drupal::service('language_manager')->getLanguageConfigOverride('fr', 'block.block.user');
+    $this->assertIdentical('fr - Static Block', $config->get('label'));
+    $config = \Drupal::service('language_manager')->getLanguageConfigOverride('fr', 'block.block.user_1');
+    $this->assertIdentical('Encore un bloc statique', $config->get('label'));
+  }
+
+}
