Drupal 7到Drupal 8:使用翻译迁移分类法(i18n)?

时间:2018-03-14 12:49:35

标签: drupal drupal-8 drupal-taxonomy

Drupal 7到Drupal 8迁移。我已使用源语言迁移了术语,但我无法迁移术语的翻译(i18n) - 名称和说明。

我已经创建了一个自定义源插件,我在其中创建了包含分类名称和描述的翻译的新字段。

那么如何迁移术语翻译? D6的例子不起作用。

谢谢。

2 个答案:

答案 0 :(得分:0)

您可以在完全迁移分类法(不翻译)之后执行以下步骤:

  1. 安装语言-https://www.drupal.org/docs/8/multilingual/install-a-language
  2. 创建用于迁移的模块(例如节点):https://github.com/evolvingweb/migrate_example_i18n
  3. 编写迁移源插件(节点示例):https://github.com/evolvingweb/migrate_example_i18n/blob/8.x/src/Plugin/migrate/source/D7NodeEntityTranslation.php
  4. 编写带有“映射”的YUML文件(节点示例):https://github.com/evolvingweb/migrate_example_i18n/blob/8.x/config/install/migrate_plus.migration.example_dog_i18n.yml
  5. 在命令行提示符下,在项目文件夹中,执行以下操作:drush mim module_name

我的过程术语的yum片段,没有反式:

  # to_db_value : from_db_value.
  # d8_db_value : d7_db_value
  tid: tid
  vid:
   plugin: migration_lookup
   migration: your_vocabulary_migration
   source: vid
  langcode:
   plugin: default_value
   default_value: en // your und lng

我的i18n反式yuml断了:

来源:

plugin: taxonomy_terms_i18n // custom source plugin to get translations
  translations: true
destination:
  plugin: entity:taxonomy_term
  translations: true
process:
  # to_db_value : from_db_value.
  # d8_db_value : d7_db_value
  tid:
    plugin: migration_lookup
    migration: // name of your previous migration of terms
    source: tid
  langcode:
    plugin: default_value
    default_value: es
  vid:
    plugin: skip_on_value
    source: machine_name
    method: row
    value:
      - // terms vid that you don't need
  name:
    plugin: skip_on_empty
    method: row
    source: translation

源文件被i18n转换为查询的片段:

     $query = $this->select('taxonomy_term_data', 'term_data');
 $query->join('taxonomy_vocabulary','vocabulary', 'term_data.vid = vocabulary.vid');
 $query->leftJoin('i18n_string','i18n', 'term_data.tid = i18n.objectid');
 $query->leftJoin('locales_target','locales', 'i18n.lid = locales.lid');

 $query
 ->fields('term_data', [
   'tid',
   'vid',
   'name',
   'description',
   'weight',
   'format',
 ])
 ->fields('vocabulary', ['machine_name'])
 ->fields('locales', ['translation']);

更多信息: https://events.drupal.org/sites/default/files/slides/Migrating%20Multilingual%20Content%20to%20Drupal%208.pdf

答案 1 :(得分:0)

您可以使用FEEDS MODULE导入分类法,节点,用户,产品,自定义块,段落,自定义菜单链接

  

要导入字段的多个值,您还需要一个名为   FEEDS TAMPER