diff --git a/core/modules/block_content/src/Plugin/migrate/source/d6/BoxTranslation.php b/core/modules/block_content/src/Plugin/migrate/source/d6/BoxTranslation.php
index 18a5c86b51a..23cf1180022 100644
--- a/core/modules/block_content/src/Plugin/migrate/source/d6/BoxTranslation.php
+++ b/core/modules/block_content/src/Plugin/migrate/source/d6/BoxTranslation.php
@@ -2,9 +2,7 @@
namespace Drupal\block_content\Plugin\migrate\source\d6;
-use Drupal\migrate\Row;
-use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase;
-use Drupal\content_translation\Plugin\migrate\source\d6\I18nQueryTrait;
+use Drupal\block_content\Plugin\migrate\source\d7\BlockCustomTranslation as D7BlockCustomTranslation;
/**
* Gets Drupal 6 i18n custom block translations from database.
@@ -14,78 +12,12 @@ use Drupal\content_translation\Plugin\migrate\source\d6\I18nQueryTrait;
* source_module = "i18nblocks"
* )
*/
-class BoxTranslation extends DrupalSqlBase {
-
- use I18nQueryTrait;
+class BoxTranslation extends D7BlockCustomTranslation {
/**
- * {@inheritdoc}
+ * Drupal 6 table names.
*/
- public function query() {
- // Build a query based on i18n_strings table where each row has the
- // translation for only one property, either title or description. The
- // method prepareRow() is then used to obtain the translation for the
- // other property.
- $query = $this->select('boxes', 'b')
- ->fields('b', ['bid', 'format', 'body'])
- ->fields('i18n', ['property'])
- ->fields('lt', ['lid', 'translation', 'language'])
- ->orderBy('b.bid')
- ->isNotNull('lt.lid');
-
- // Use 'title' for the info field to match the property name in the
- // i18n_strings table.
- $query->addField('b', 'info', 'title');
-
- // Add in the property, which is either title or body. Cast the bid to text
- // so PostgreSQL can make the join.
- $query->leftJoin('i18n_strings', 'i18n', 'i18n.objectid = CAST(b.bid as CHAR(255))');
- $query->condition('i18n.type', 'block');
-
- // Add in the translation for the property.
- $query->leftJoin('locales_target', 'lt', 'lt.lid = i18n.lid');
- return $query;
- }
-
- /**
- * {@inheritdoc}
- */
- public function prepareRow(Row $row) {
- parent::prepareRow($row);
- // Save the translation for this property.
- $property_in_row = $row->getSourceProperty('property');
- // Get the translation for the property not already in the row and save it
- // in the row.
- $property_not_in_row = ($property_in_row === 'title') ? 'body' : 'title';
- return $this->getPropertyNotInRowTranslation($row, $property_not_in_row, 'bid', $this->idMap);
- }
-
- /**
- * {@inheritdoc}
- */
- public function fields() {
- return [
- 'bid' => $this->t('The block numeric identifier.'),
- 'format' => $this->t('Input format of the custom block/box content.'),
- 'lid' => $this->t('i18n_string table id'),
- 'language' => $this->t('Language for this field.'),
- 'property' => $this->t('Block property'),
- 'translation' => $this->t('The translation of the value of "property".'),
- 'title' => $this->t('Block title.'),
- 'title_translated' => $this->t('Block title translation.'),
- 'body' => $this->t('Block body.'),
- 'body_translated' => $this->t('Block body translation.'),
- ];
- }
-
- /**
- * {@inheritdoc}
- */
- public function getIds() {
- $ids['bid']['type'] = 'integer';
- $ids['bid']['alias'] = 'b';
- $ids['language']['type'] = 'string';
- return $ids;
- }
+ const CUSTOM_BLOCK_TABLE = 'boxes';
+ const I18N_STRING_TABLE = 'i18n_strings';
}
diff --git a/core/modules/block_content/src/Plugin/migrate/source/d7/BlockCustomTranslation.php b/core/modules/block_content/src/Plugin/migrate/source/d7/BlockCustomTranslation.php
new file mode 100644
index 00000000000..6115e12c619
--- /dev/null
+++ b/core/modules/block_content/src/Plugin/migrate/source/d7/BlockCustomTranslation.php
@@ -0,0 +1,99 @@
+select(static::CUSTOM_BLOCK_TABLE, 'b')
+ ->fields('b', ['bid', 'format', 'body'])
+ ->fields('i18n', ['property'])
+ ->fields('lt', ['lid', 'translation', 'language'])
+ ->orderBy('b.bid')
+ ->isNotNull('lt.lid');
+
+ // Use 'title' for the info field to match the property name in
+ // i18nStringTable.
+ $query->addField('b', 'info', 'title');
+
+ // Add in the property, which is either title or body. Cast the bid to text
+ // so PostgreSQL can make the join.
+ $query->leftJoin(static::I18N_STRING_TABLE, 'i18n', 'i18n.objectid = CAST(b.bid as CHAR(255))');
+ $query->condition('i18n.type', 'block');
+
+ // Add in the translation for the property.
+ $query->leftJoin('locales_target', 'lt', 'lt.lid = i18n.lid');
+ return $query;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function prepareRow(Row $row) {
+ parent::prepareRow($row);
+ // Set the i18n string table for use in I18nQueryTrait.
+ $this->i18nStringTable = static::I18N_STRING_TABLE;
+ // Save the translation for this property.
+ $property_in_row = $row->getSourceProperty('property');
+ // Get the translation for the property not already in the row and save it
+ // in the row.
+ $property_not_in_row = ($property_in_row === 'title') ? 'body' : 'title';
+ return $this->getPropertyNotInRowTranslation($row, $property_not_in_row, 'bid', $this->idMap);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function fields() {
+ return [
+ 'bid' => $this->t('The block numeric identifier.'),
+ 'format' => $this->t('Input format of the custom block/box content.'),
+ 'lid' => $this->t('i18n_string table id'),
+ 'language' => $this->t('Language for this field.'),
+ 'property' => $this->t('Block property'),
+ 'translation' => $this->t('The translation of the value of "property".'),
+ 'title' => $this->t('Block title.'),
+ 'title_translated' => $this->t('Block title translation.'),
+ 'body' => $this->t('Block body.'),
+ 'body_translated' => $this->t('Block body translation.'),
+ ];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getIds() {
+ $ids['bid']['type'] = 'integer';
+ $ids['bid']['alias'] = 'b';
+ $ids['language']['type'] = 'string';
+ return $ids;
+ }
+
+}
diff --git a/core/modules/block_content/tests/src/Kernel/Migrate/d7/MigrateCustomBlockContentTranslationTest.php b/core/modules/block_content/tests/src/Kernel/Migrate/d7/MigrateCustomBlockContentTranslationTest.php
new file mode 100644
index 00000000000..092eb0a853d
--- /dev/null
+++ b/core/modules/block_content/tests/src/Kernel/Migrate/d7/MigrateCustomBlockContentTranslationTest.php
@@ -0,0 +1,69 @@
+installConfig(['block_content']);
+ $this->installEntitySchema('block_content');
+ $this->executeMigrations([
+ 'language',
+ 'd7_filter_format',
+ 'block_content_type',
+ 'block_content_body_field',
+ 'd7_custom_block',
+ 'd7_custom_block_translation',
+ ]);
+ }
+
+ /**
+ * Tests the Drupal 7 i18n custom block strings to Drupal 8 migration.
+ */
+ public function testCustomBlockContentTranslation() {
+ /** @var \Drupal\block_content\Entity\BlockContent $block */
+ $block = BlockContent::load(1)->getTranslation('fr');
+ $this->assertSame('fr - Mildly amusing limerick of the day', $block->label());
+ $this->assertGreaterThanOrEqual($block->getChangedTime(), \Drupal::time()->getRequestTime());
+ $this->assertLessThanOrEqual(time(), $block->getChangedTime());
+ $this->assertSame('fr', $block->language()->getId());
+ $translation = "fr - A fellow jumped off a high wall\r\nAnd had a most terrible fall\r\nHe went back to bed\r\nWith a bump on his head\r\nThat's why you don't jump off a wall";
+ $this->assertSame($translation, $block->body->value);
+ $this->assertSame('filtered_html', $block->body->format);
+
+ $block = $block->getTranslation('is');
+ $this->assertSame('is - Mildly amusing limerick of the day', $block->label());
+ $this->assertGreaterThanOrEqual($block->getChangedTime(), \Drupal::time()->getRequestTime());
+ $this->assertLessThanOrEqual(time(), $block->getChangedTime());
+ $this->assertSame('is', $block->language()->getId());
+ $text = "A fellow jumped off a high wall\r\nAnd had a most terrible fall\r\nHe went back to bed\r\nWith a bump on his head\r\nThat's why you don't jump off a wall";
+ $this->assertSame($text, $block->body->value);
+ $this->assertSame('filtered_html', $block->body->format);
+ }
+
+}
diff --git a/core/modules/block_content/tests/src/Kernel/Plugin/migrate/source/d7/BlockCustomTranslationTest.php b/core/modules/block_content/tests/src/Kernel/Plugin/migrate/source/d7/BlockCustomTranslationTest.php
new file mode 100644
index 00000000000..c5bffaf0ebc
--- /dev/null
+++ b/core/modules/block_content/tests/src/Kernel/Plugin/migrate/source/d7/BlockCustomTranslationTest.php
@@ -0,0 +1,148 @@
+ 1,
+ 'body' => 'box 1 body',
+ 'info' => 'box 1 title',
+ 'format' => '2',
+ ],
+ [
+ 'bid' => 2,
+ 'body' => 'box 2 body',
+ 'info' => 'box 2 title',
+ 'format' => '2',
+ ],
+ ];
+
+ $tests[0]['database']['i18n_string'] = [
+ [
+ 'lid' => 1,
+ 'objectid' => 1,
+ 'type' => 'block',
+ 'property' => 'title',
+ 'objectindex' => 1,
+ 'format' => 0,
+ ],
+ [
+ 'lid' => 2,
+ 'objectid' => 1,
+ 'type' => 'block',
+ 'property' => 'body',
+ 'objectindex' => 1,
+ 'format' => 0,
+ ],
+ [
+ 'lid' => 3,
+ 'objectid' => 2,
+ 'type' => 'block',
+ 'property' => 'body',
+ 'objectindex' => 2,
+ 'format' => 2,
+ ],
+ ];
+
+ $tests[0]['database']['locales_target'] = [
+ [
+ 'lid' => 1,
+ 'language' => 'fr',
+ 'translation' => 'fr - title translation',
+ 'plid' => 0,
+ 'plural' => 0,
+ 'i18n_status' => 0,
+ ],
+ [
+ 'lid' => 2,
+ 'language' => 'fr',
+ 'translation' => 'fr - body translation',
+ 'plid' => 0,
+ 'plural' => 0,
+ 'i18n_status' => 0,
+ ],
+ [
+ 'lid' => 3,
+ 'language' => 'zu',
+ 'translation' => 'zu - body translation',
+ 'plid' => 0,
+ 'plural' => 0,
+ 'i18n_status' => 0,
+ ],
+ ];
+
+ $tests[0]['database']['system'] = [
+ [
+ 'type' => 'module',
+ 'name' => 'system',
+ 'schema_version' => '7001',
+ 'status' => '1',
+ ],
+ ];
+
+ $tests[0]['expected_results'] = [
+ [
+ 'lid' => '1',
+ 'property' => 'title',
+ 'language' => 'fr',
+ 'translation' => 'fr - title translation',
+ 'bid' => '1',
+ 'format' => '2',
+ 'title_translated' => 'fr - title translation',
+ 'body_translated' => 'fr - body translation',
+ 'title' => 'box 1 title',
+ 'body' => 'box 1 body',
+ ],
+ [
+ 'lid' => '2',
+ 'property' => 'body',
+ 'language' => 'fr',
+ 'translation' => 'fr - body translation',
+ 'bid' => '1',
+ 'format' => '2',
+ 'title_translated' => 'fr - title translation',
+ 'body_translated' => 'fr - body translation',
+ 'title' => 'box 1 title',
+ 'body' => 'box 1 body',
+ ],
+ [
+ 'lid' => '3',
+ 'property' => 'body',
+ 'language' => 'zu',
+ 'translation' => 'zu - body translation',
+ 'bid' => '2',
+ 'format' => '2',
+ 'title_translated' => NULL,
+ 'body_translated' => 'zu - body translation',
+ 'title' => 'box 2 title',
+ 'body' => 'box 2 body',
+ ],
+ ];
+
+ return $tests;
+ }
+
+}
diff --git a/core/modules/content_translation/migrations/d7_custom_block_translation.yml b/core/modules/content_translation/migrations/d7_custom_block_translation.yml
new file mode 100644
index 00000000000..32ed6582fde
--- /dev/null
+++ b/core/modules/content_translation/migrations/d7_custom_block_translation.yml
@@ -0,0 +1,50 @@
+id: d7_custom_block_translation
+label: Custom block translations
+migration_tags:
+ - Drupal 7
+ - Content
+ - Multilingual
+source:
+ plugin: d7_block_custom_translation
+process:
+ id:
+ plugin: migration_lookup
+ migration: d7_custom_block
+ source:
+ - bid
+ langcode: language
+ info:
+ -
+ plugin: callback
+ source:
+ - title_translated
+ - title
+ callable: array_filter
+ -
+ plugin: callback
+ callable: current
+ 'body/value':
+ -
+ plugin: callback
+ source:
+ - body_translated
+ - body
+ callable: array_filter
+ -
+ plugin: callback
+ callable: current
+ 'body/format':
+ plugin: migration_lookup
+ migration: d7_filter_format
+ source: format
+destination:
+ plugin: entity:block_content
+ no_stub: true
+ translations: true
+ destination_module: content_translation
+migration_dependencies:
+ required:
+ - d7_filter_format
+ - block_content_body_field
+ - d7_custom_block
+ - language
diff --git a/core/modules/content_translation/src/Plugin/migrate/source/d6/I18nQueryTrait.php b/core/modules/content_translation/src/Plugin/migrate/source/I18nQueryTrait.php
similarity index 87%
rename from core/modules/content_translation/src/Plugin/migrate/source/d6/I18nQueryTrait.php
rename to core/modules/content_translation/src/Plugin/migrate/source/I18nQueryTrait.php
index a5bc9494f2a..145cfb2caaf 100644
--- a/core/modules/content_translation/src/Plugin/migrate/source/d6/I18nQueryTrait.php
+++ b/core/modules/content_translation/src/Plugin/migrate/source/I18nQueryTrait.php
@@ -1,6 +1,6 @@
select('i18n_strings', 'i18n')
+ $query = $this->select($this->i18nStringTable, 'i18n')
->fields('i18n', ['lid'])
->condition('i18n.property', $property_not_in_row)
->condition('i18n.objectid', $object_id);
diff --git a/core/modules/menu_link_content/src/Plugin/migrate/source/d6/MenuLinkTranslation.php b/core/modules/menu_link_content/src/Plugin/migrate/source/d6/MenuLinkTranslation.php
index 6f458e5ad1f..983c3159914 100644
--- a/core/modules/menu_link_content/src/Plugin/migrate/source/d6/MenuLinkTranslation.php
+++ b/core/modules/menu_link_content/src/Plugin/migrate/source/d6/MenuLinkTranslation.php
@@ -2,7 +2,7 @@
namespace Drupal\menu_link_content\Plugin\migrate\source\d6;
-use Drupal\content_translation\Plugin\migrate\source\d6\I18nQueryTrait;
+use Drupal\content_translation\Plugin\migrate\source\I18nQueryTrait;
use Drupal\migrate\Row;
use Drupal\menu_link_content\Plugin\migrate\source\MenuLink;
@@ -18,6 +18,11 @@ class MenuLinkTranslation extends MenuLink {
use I18nQueryTrait;
+ /**
+ * Drupal 6 table names.
+ */
+ const I18N_STRING_TABLE = 'i18n_strings';
+
/**
* {@inheritdoc}
*/
@@ -35,7 +40,7 @@ class MenuLinkTranslation extends MenuLink {
// Add in the property, which is either title or description. Cast the mlid
// to text so PostgreSQL can make the join.
- $query->leftJoin('i18n_strings', 'i18n', 'CAST(ml.mlid as CHAR(255)) = i18n.objectid');
+ $query->leftJoin(static::I18N_STRING_TABLE, 'i18n', 'CAST(ml.mlid as CHAR(255)) = i18n.objectid');
$query->isNotNull('i18n.lid');
$query->addField('i18n', 'lid');
$query->addField('i18n', 'property');
@@ -56,6 +61,8 @@ class MenuLinkTranslation extends MenuLink {
// Save the translation for this property.
$property_in_row = $row->getSourceProperty('property');
+ // Set the i18n string table for use in I18nQueryTrait.
+ $this->i18nStringTable = static::I18N_STRING_TABLE;
// Get the translation for the property not already in the row and save it
// in the row.
$property_not_in_row = ($property_in_row == 'title') ? 'description' : 'title';
diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal7.php b/core/modules/migrate_drupal/tests/fixtures/drupal7.php
index 2200699b00e..9e3e2042a4c 100644
--- a/core/modules/migrate_drupal/tests/fixtures/drupal7.php
+++ b/core/modules/migrate_drupal/tests/fixtures/drupal7.php
@@ -11,6 +11,286 @@ use Drupal\Core\Database\Database;
$connection = Database::getConnection();
+$connection->schema()->createTable('i18n_block_language', array(
+ 'fields' => array(
+ 'module' => array(
+ 'type' => 'varchar',
+ 'not null' => TRUE,
+ 'length' => '64',
+ ),
+ 'delta' => array(
+ 'type' => 'varchar',
+ 'not null' => TRUE,
+ 'length' => '32',
+ ),
+ 'language' => array(
+ 'type' => 'varchar',
+ 'not null' => TRUE,
+ 'length' => '12',
+ 'default' => '',
+ ),
+ ),
+ 'primary key' => array(
+ 'module',
+ 'delta',
+ 'language',
+ ),
+ 'indexes' => array(
+ 'language' => array(
+ 'language',
+ ),
+ ),
+ 'mysql_character_set' => 'utf8',
+));
+
+$connection->schema()->createTable('i18n_string', array(
+ 'fields' => array(
+ 'lid' => array(
+ 'type' => 'int',
+ 'not null' => TRUE,
+ 'size' => 'normal',
+ 'default' => '0',
+ ),
+ 'textgroup' => array(
+ 'type' => 'varchar',
+ 'not null' => TRUE,
+ 'length' => '50',
+ 'default' => 'default',
+ ),
+ 'context' => array(
+ 'type' => 'varchar',
+ 'not null' => TRUE,
+ 'length' => '255',
+ 'default' => '',
+ ),
+ 'objectid' => array(
+ 'type' => 'varchar',
+ 'not null' => TRUE,
+ 'length' => '255',
+ 'default' => '',
+ ),
+ 'type' => array(
+ 'type' => 'varchar',
+ 'not null' => TRUE,
+ 'length' => '255',
+ 'default' => '',
+ ),
+ 'property' => array(
+ 'type' => 'varchar',
+ 'not null' => TRUE,
+ 'length' => '255',
+ 'default' => '',
+ ),
+ 'objectindex' => array(
+ 'type' => 'int',
+ 'not null' => TRUE,
+ 'size' => 'big',
+ 'default' => '0',
+ ),
+ 'format' => array(
+ 'type' => 'varchar',
+ 'not null' => FALSE,
+ 'length' => '255',
+ ),
+ ),
+ 'primary key' => array(
+ 'lid',
+ ),
+ 'indexes' => array(
+ 'group_context' => array(
+ 'textgroup',
+ array(
+ 'context',
+ '50',
+ ),
+ ),
+ ),
+ 'mysql_character_set' => 'utf8',
+));
+
+$connection->insert('i18n_string')
+->fields(array(
+ 'lid',
+ 'textgroup',
+ 'context',
+ 'objectid',
+ 'type',
+ 'property',
+ 'objectindex',
+ 'format',
+))
+->values(array(
+ 'lid' => '57',
+ 'textgroup' => 'blocks',
+ 'context' => 'block:1:title',
+ 'objectid' => '1',
+ 'type' => 'block',
+ 'property' => 'title',
+ 'objectindex' => '1',
+ 'format' => '',
+))
+->values(array(
+ 'lid' => '60',
+ 'textgroup' => 'blocks',
+ 'context' => 'block:1:body',
+ 'objectid' => '1',
+ 'type' => 'block',
+ 'property' => 'body',
+ 'objectindex' => '1',
+ 'format' => 'filtered_html',
+))
+->values(array(
+ 'lid' => '61',
+ 'textgroup' => 'node',
+ 'context' => 'type:article:name',
+ 'objectid' => 'article',
+ 'type' => 'type',
+ 'property' => 'name',
+ 'objectindex' => '0',
+ 'format' => '',
+))
+->values(array(
+ 'lid' => '62',
+ 'textgroup' => 'node',
+ 'context' => 'type:article:title_label',
+ 'objectid' => 'article',
+ 'type' => 'type',
+ 'property' => 'title_label',
+ 'objectindex' => '0',
+ 'format' => '',
+))
+->values(array(
+ 'lid' => '63',
+ 'textgroup' => 'node',
+ 'context' => 'type:article:description',
+ 'objectid' => 'article',
+ 'type' => 'type',
+ 'property' => 'description',
+ 'objectindex' => '0',
+ 'format' => '',
+))
+->values(array(
+ 'lid' => '64',
+ 'textgroup' => 'node',
+ 'context' => 'type:article:help',
+ 'objectid' => 'article',
+ 'type' => 'type',
+ 'property' => 'help',
+ 'objectindex' => '0',
+ 'format' => '',
+))
+->values(array(
+ 'lid' => '65',
+ 'textgroup' => 'node',
+ 'context' => 'type:book:name',
+ 'objectid' => 'book',
+ 'type' => 'type',
+ 'property' => 'name',
+ 'objectindex' => '0',
+ 'format' => '',
+))
+->values(array(
+ 'lid' => '66',
+ 'textgroup' => 'node',
+ 'context' => 'type:book:title_label',
+ 'objectid' => 'book',
+ 'type' => 'type',
+ 'property' => 'title_label',
+ 'objectindex' => '0',
+ 'format' => '',
+))
+->values(array(
+ 'lid' => '67',
+ 'textgroup' => 'node',
+ 'context' => 'type:book:description',
+ 'objectid' => 'book',
+ 'type' => 'type',
+ 'property' => 'description',
+ 'objectindex' => '0',
+ 'format' => '',
+))
+->values(array(
+ 'lid' => '68',
+ 'textgroup' => 'node',
+ 'context' => 'type:page:name',
+ 'objectid' => 'page',
+ 'type' => 'type',
+ 'property' => 'name',
+ 'objectindex' => '0',
+ 'format' => '',
+))
+->values(array(
+ 'lid' => '69',
+ 'textgroup' => 'node',
+ 'context' => 'type:page:title_label',
+ 'objectid' => 'page',
+ 'type' => 'type',
+ 'property' => 'title_label',
+ 'objectindex' => '0',
+ 'format' => '',
+))
+->values(array(
+ 'lid' => '70',
+ 'textgroup' => 'node',
+ 'context' => 'type:page:description',
+ 'objectid' => 'page',
+ 'type' => 'type',
+ 'property' => 'description',
+ 'objectindex' => '0',
+ 'format' => '',
+))
+->values(array(
+ 'lid' => '71',
+ 'textgroup' => 'node',
+ 'context' => 'type:page:help',
+ 'objectid' => 'page',
+ 'type' => 'type',
+ 'property' => 'help',
+ 'objectindex' => '0',
+ 'format' => '',
+))
+->values(array(
+ 'lid' => '72',
+ 'textgroup' => 'node',
+ 'context' => 'type:test_content_type:name',
+ 'objectid' => 'test_content_type',
+ 'type' => 'type',
+ 'property' => 'name',
+ 'objectindex' => '0',
+ 'format' => '',
+))
+->values(array(
+ 'lid' => '73',
+ 'textgroup' => 'node',
+ 'context' => 'type:test_content_type:title_label',
+ 'objectid' => 'test_content_type',
+ 'type' => 'type',
+ 'property' => 'title_label',
+ 'objectindex' => '0',
+ 'format' => '',
+))
+->values(array(
+ 'lid' => '74',
+ 'textgroup' => 'node',
+ 'context' => 'type:test_content_type:description',
+ 'objectid' => 'test_content_type',
+ 'type' => 'type',
+ 'property' => 'description',
+ 'objectindex' => '0',
+ 'format' => '',
+))
+->values(array(
+ 'lid' => '75',
+ 'textgroup' => 'node',
+ 'context' => 'type:test_content_type:help',
+ 'objectid' => 'test_content_type',
+ 'type' => 'type',
+ 'property' => 'help',
+ 'objectindex' => '0',
+ 'format' => '',
+))
+->execute();
+
$connection->schema()->createTable('accesslog', array(
'fields' => array(
'aid' => array(
@@ -15126,6 +15406,222 @@ $connection->insert('locales_source')
'context' => '',
'version' => 'none',
))
+->values(array(
+ 'lid' => '49',
+ 'location' => 'modules/block/block.js; sites/all/modules/i18n/i18n_block/i18n_block.js',
+ 'textgroup' => 'default',
+ 'source' => 'Not restricted',
+ 'context' => '',
+ 'version' => 'none',
+))
+->values(array(
+ 'lid' => '50',
+ 'location' => 'modules/block/block.js',
+ 'textgroup' => 'default',
+ 'source' => 'Restricted to certain pages',
+ 'context' => '',
+ 'version' => 'none',
+))
+->values(array(
+ 'lid' => '51',
+ 'location' => 'modules/block/block.js',
+ 'textgroup' => 'default',
+ 'source' => 'Not customizable',
+ 'context' => '',
+ 'version' => 'none',
+))
+->values(array(
+ 'lid' => '52',
+ 'location' => 'modules/block/block.js',
+ 'textgroup' => 'default',
+ 'source' => 'The changes to these blocks will not be saved until the Save blocks button is clicked.',
+ 'context' => '',
+ 'version' => 'none',
+))
+->values(array(
+ 'lid' => '53',
+ 'location' => 'modules/block/block.js',
+ 'textgroup' => 'default',
+ 'source' => 'The block cannot be placed in this region.',
+ 'context' => '',
+ 'version' => 'none',
+))
+->values(array(
+ 'lid' => '54',
+ 'location' => 'sites/all/modules/i18n/i18n_block/i18n_block.js',
+ 'textgroup' => 'default',
+ 'source' => 'Translatable',
+ 'context' => '',
+ 'version' => 'none',
+))
+->values(array(
+ 'lid' => '55',
+ 'location' => 'sites/all/modules/i18n/i18n_block/i18n_block.js',
+ 'textgroup' => 'default',
+ 'source' => 'Not translatable',
+ 'context' => '',
+ 'version' => 'none',
+))
+->values(array(
+ 'lid' => '56',
+ 'location' => 'sites/all/modules/i18n/i18n_block/i18n_block.js',
+ 'textgroup' => 'default',
+ 'source' => 'Restricted to certain languages',
+ 'context' => '',
+ 'version' => 'none',
+))
+->values(array(
+ 'lid' => '57',
+ 'location' => 'blocks:block:1:title',
+ 'textgroup' => 'blocks',
+ 'source' => 'Mildly amusing limerick of the day',
+ 'context' => 'block:1:title',
+ 'version' => '1',
+))
+->values(array(
+ 'lid' => '58',
+ 'location' => 'misc/ajax.js',
+ 'textgroup' => 'default',
+ 'source' => 'The response failed verification so will not be processed.',
+ 'context' => '',
+ 'version' => 'none',
+))
+->values(array(
+ 'lid' => '59',
+ 'location' => 'misc/ajax.js',
+ 'textgroup' => 'default',
+ 'source' => 'The callback URL is not local and not trusted: !url',
+ 'context' => '',
+ 'version' => 'none',
+))
+->values(array(
+ 'lid' => '60',
+ 'location' => 'blocks:block:1:body',
+ 'textgroup' => 'blocks',
+ 'source' => "A fellow jumped off a high wall\r\nAnd had a most terrible fall\r\nHe went back to bed\r\nWith a bump on his head\r\nThat's why you don't jump off a wall",
+ 'context' => 'block:1:body',
+ 'version' => '1',
+))
+->values(array(
+ 'lid' => '61',
+ 'location' => 'node:type:article:name',
+ 'textgroup' => 'node',
+ 'source' => 'Article',
+ 'context' => 'type:article:name',
+ 'version' => '1',
+))
+->values(array(
+ 'lid' => '62',
+ 'location' => 'node:type:article:title_label',
+ 'textgroup' => 'node',
+ 'source' => 'Title',
+ 'context' => 'type:article:title_label',
+ 'version' => '1',
+))
+->values(array(
+ 'lid' => '63',
+ 'location' => 'node:type:article:description',
+ 'textgroup' => 'node',
+ 'source' => 'Use articles for time-sensitive content like news, press releases or blog posts.',
+ 'context' => 'type:article:description',
+ 'version' => '1',
+))
+->values(array(
+ 'lid' => '64',
+ 'location' => 'node:type:article:help',
+ 'textgroup' => 'node',
+ 'source' => 'Help text for articles',
+ 'context' => 'type:article:help',
+ 'version' => '1',
+))
+->values(array(
+ 'lid' => '65',
+ 'location' => 'node:type:book:name',
+ 'textgroup' => 'node',
+ 'source' => 'Book page',
+ 'context' => 'type:book:name',
+ 'version' => '1',
+))
+->values(array(
+ 'lid' => '66',
+ 'location' => 'node:type:book:title_label',
+ 'textgroup' => 'node',
+ 'source' => 'Title',
+ 'context' => 'type:book:title_label',
+ 'version' => '1',
+))
+->values(array(
+ 'lid' => '67',
+ 'location' => 'node:type:book:description',
+ 'textgroup' => 'node',
+ 'source' => 'Books have a built-in hierarchical navigation. Use for handbooks or tutorials.',
+ 'context' => 'type:book:description',
+ 'version' => '1',
+))
+->values(array(
+ 'lid' => '68',
+ 'location' => 'node:type:page:name',
+ 'textgroup' => 'node',
+ 'source' => 'Basic page',
+ 'context' => 'type:page:name',
+ 'version' => '1',
+))
+->values(array(
+ 'lid' => '69',
+ 'location' => 'node:type:page:title_label',
+ 'textgroup' => 'node',
+ 'source' => 'Title',
+ 'context' => 'type:page:title_label',
+ 'version' => '1',
+))
+->values(array(
+ 'lid' => '70',
+ 'location' => 'node:type:page:description',
+ 'textgroup' => 'node',
+ 'source' => "Use basic pages for your static content, such as an 'About us' page.",
+ 'context' => 'type:page:description',
+ 'version' => '1',
+))
+->values(array(
+ 'lid' => '71',
+ 'location' => 'node:type:page:help',
+ 'textgroup' => 'node',
+ 'source' => 'Help text for basic pages',
+ 'context' => 'type:page:help',
+ 'version' => '1',
+))
+->values(array(
+ 'lid' => '72',
+ 'location' => 'node:type:test_content_type:name',
+ 'textgroup' => 'node',
+ 'source' => 'Test content type',
+ 'context' => 'type:test_content_type:name',
+ 'version' => '1',
+))
+->values(array(
+ 'lid' => '73',
+ 'location' => 'node:type:test_content_type:title_label',
+ 'textgroup' => 'node',
+ 'source' => 'Title',
+ 'context' => 'type:test_content_type:title_label',
+ 'version' => '1',
+))
+->values(array(
+ 'lid' => '74',
+ 'location' => 'node:type:test_content_type:description',
+ 'textgroup' => 'node',
+ 'source' => 'This is the description of the test content type.',
+ 'context' => 'type:test_content_type:description',
+ 'version' => '1',
+))
+->values(array(
+ 'lid' => '75',
+ 'location' => 'node:type:test_content_type:help',
+ 'textgroup' => 'node',
+ 'source' => 'Help text for test content type',
+ 'context' => 'type:test_content_type:help',
+ 'version' => '1',
+))
->execute();
$connection->schema()->createTable('locales_target', array(
@@ -15159,6 +15655,12 @@ $connection->schema()->createTable('locales_target', array(
'size' => 'normal',
'default' => '0',
),
+ 'i18n_status' => array(
+ 'type' => 'int',
+ 'not null' => TRUE,
+ 'size' => 'normal',
+ 'default' => '0',
+ ),
),
'primary key' => array(
'lid',
@@ -15168,6 +15670,41 @@ $connection->schema()->createTable('locales_target', array(
'mysql_character_set' => 'utf8',
));
+$connection->insert('locales_target')
+->fields(array(
+ 'lid',
+ 'translation',
+ 'language',
+ 'plid',
+ 'plural',
+ 'i18n_status',
+))
+->values(array(
+ 'lid' => '57',
+ 'translation' => 'fr - Mildly amusing limerick of the day',
+ 'language' => 'fr',
+ 'plid' => '0',
+ 'plural' => '0',
+ 'i18n_status' => '0',
+))
+->values(array(
+ 'lid' => '60',
+ 'translation' => "fr - A fellow jumped off a high wall\r\nAnd had a most terrible fall\r\nHe went back to bed\r\nWith a bump on his head\r\nThat's why you don't jump off a wall",
+ 'language' => 'fr',
+ 'plid' => '0',
+ 'plural' => '0',
+ 'i18n_status' => '0',
+))
+->values(array(
+ 'lid' => '57',
+ 'translation' => 'is - Mildly amusing limerick of the day',
+ 'language' => 'is',
+ 'plid' => '0',
+ 'plural' => '0',
+ 'i18n_status' => '0',
+))
+->execute();
+
$connection->schema()->createTable('menu_custom', array(
'fields' => array(
'menu_name' => array(