Перенос многоязычного контента из CSV в Drupal 8
Опубликовано: 2021-07-13Перенос данных из любого источника в Drupal 8 теперь стал проще с помощью различных модулей, которые позволяют легко переносить данные. Миграция в Drupal - это термин для любого процесса, который перемещает данные из внешнего источника на текущий сайт Drupal. Вы можете перенести данные, которые включают узлы, пользователей, конфигурацию и любые другие компоненты сайта.
Drupal предоставляет вам множество способов переноса контента. В зависимости от веб-сайта и источника данных вы можете выбрать лучший способ сделать это. Однако перенос многоязычных данных может добавить еще несколько шагов к процессу миграции. Сначала вам нужно будет перенести базовый контент, а затем перенести переводы. В этой статье мы подробно рассмотрим эти шаги, чтобы помочь вам лучше понять перенос многоязычного контента из CSV в Drupal 8.

Модули миграции Drupal 8, которые вам понадобятся
Как упоминалось ранее, Drupal предлагает множество опций и модулей, которые могут помочь вам в простой и беспроблемной миграции. Для переноса многоязычного контента вам потребуются:
- Migrate: предоставляет гибкую структуру для переноса контента в Drupal из других источников.
- Migrate plus: предоставляет плагины для миграции, такие как плагины исходного кода, плагины процессов, плагины назначения и расширения API.
- Migrate Drupal: Обеспечивает поддержку миграции содержимого и конфигураций.
- Перенести исходный CSV-файл : предоставляет плагин для импорта содержимого в Drupal из CSV-файла.
- Инструменты миграции : этот модуль предоставляет инструменты пользовательского интерфейса и команды Drush, используемые для миграции.
- Модуль разработки конфигурации: этот модуль преобразует скрипт в конфигурации.
Шаг 1. Перенос базового содержимого
Чтобы начать миграцию базового контента, нам сначала нужно создать собственный модуль в Drupal 8.

Убедитесь, что в info.yml есть эти ключи и значения.
Вам нужно будет создать yaml- файлы, известные как сценарии миграции, и поместить их в каталог config / install созданного настраиваемого модуля. Ключ config_devel / install файла info.yml должен содержать все файлы yaml.

Это образец файла yaml для импорта терминов таксономии. Скрипт миграции состоит из 4 разделов:
- Метаданные: будут иметь идентификатор, метку и идентификатор группы миграции.
- Источник: в исходном ключе должен быть указан путь к CSV-файлу.
- Процесс: сопоставление полей и столбцов CSV.
- Место назначения: место назначения, в котором сохраняются импортированные данные.
Содержимое узла yaml-файла должно быть записано аналогично. Единственная разница - это пункт назначения.

Плагин назначения должен быть entity: node, а default_bundle будет иметь имя компьютера того типа контента, в который импортируется контент.
После создания всех файлов yaml идентификаторы yaml должны быть включены в info.yml . Как только все будет сделано, включите настраиваемый модуль.
Используйте команду Drush drush cdi <идентификатор миграции> . Здесь идентификатор миграции - это миграция techx . Это преобразует сценарий в конфигурации.
После запуска команды перейдите в админ> структура> миграция . Вы найдете группу миграции, которую вы создали, щелкнув по списку миграции. Это покажет вам список созданных сценариев миграции.

При нажатии на вкладку «Выполнить» отображается список доступных операций:


Импорт заключается в извлечении данных из источника.
Откат удалит импортированные данные.
Остановка - прервать процесс импорта или отката.
Иногда процесс застревает. Для перехода в состояние ожидания используется Reset .
Для получения более подробной информации о том, как перенести данные различных сущностей, таких как пользователь, параграф, проверьте CSV Import to Migrate Drupal 7 to 8 - A Complete guide.
Шаг 2. Перенос переводов базового контента
Если вы уже включили многоязычный контент на своем веб-сайте Drupal 8, вы можете пропустить первый шаг. Если вы хотите узнать, как создавать многоязычные веб-сайты на Drupal 8 (и зачем он вам может понадобиться), ознакомьтесь с этой статьей.
1. Добавление языка на сайт Drupal
Чтобы импортировать переводы, сначала мы должны сделать наш сайт многоязычным. Давайте посмотрим, как загрузить языки на сайт.
- Включите модуль перевода языка и контента . Это основные модули.
- Перейдите в / admin / config / Regional и language / language / add language.

- Щелчок по раскрывающемуся списку дает вам список языков. Выберите желаемый язык на сайте и нажмите « Добавить язык» . Это загрузит язык для вашего сайта.
2. Включение перевода для сущностей
После того, как мы установили нужные нам языки, мы должны включить переводы для объектов перед импортом или добавлением переводов к контенту. Для этого перейдите в admin / config / Regional / content translation . Выберите объекты, для которых вы хотите включить перевод, и нажмите « Сохранить конфигурации» .
В этом примере я импортирую тип контента блога и, таким образом, включаю перевод для типа контента блога.

3. Обновите файлы миграции.
Чтобы импортировать переводы, необходимо внести некоторые изменения в файлы yaml. Укажите путь к CSV-файлу переведенного содержимого в качестве основного содержимого, и переведенное содержимое хранится в разных файлах. Изменения в переводе терминов.

Добавьте новый ключевой tid в раздел процесса сценария с плагином в качестве миграции, источником в качестве идентификатора , а значение миграции должно быть идентификатором миграции его базового сценария миграции содержимого.
Для миграции узла добавьте новый ключевой nid в разделе процесса. Здесь ключ миграции будет иметь значение идентификатора миграции его базового сценария миграции.

Следует добавить еще один ключ - переводы со значением true . Это должно быть добавлено в раздел назначения всех сценариев миграции перевода независимо от сущностей.

Определите язык, на который будет импортирован перевод, с помощью ключа langcode . В этом примере я импортирую японские переводы, поэтому значение будет ja .

Эти изменения предписывают сценарию брать идентификатор содержимого из основной миграции содержимого, из которой это содержимое обрабатывается как переводы, а не как новый узел.
Что нужно помнить
- Процесс импорта должен идти в порядке. Например, если термины упоминаются в узле, термины должны быть импортированы в первую очередь перед содержимым узла.
- Включите перевод для объектов перед импортом переводов.
- Порядок перевода содержимого в CSV-файле должен быть таким же, как и в основном содержимом. То есть базовый контент и его переводы должны находиться в одной строке в CSV-файле.
- Сначала импортируйте базовое содержимое, а затем содержимое перевода. В противном случае оба будут рассматриваться как индивидуальное содержимое.
