Vengo de la lectura Utilizando el nuevo módulo / API de migración de Drupal 8 y migración de contenido: CSV a Drupal 8, el proceso para crear una migración es muy claro y funciona, pero no puedo encontrar cómo migrar contenido a un sitio multilingüe. En la descripción general de la API de Migrate, no puedo encontrar ninguna información al respecto.
Entonces, ¿cómo puedo migrar contenido multilingüe?
ACTUALIZACIÓN: Encontré un ejemplo: https://github.com/drupal/drupal/tree/8.3.x/core/modules/migrate/tests/modules/migrate_external_translated_test
Por el momento pude migrar el contenido en inglés pero no las traducciones.
8
migration
importing-exporting
Adrian Cid Almaguer
fuente
fuente
I was able for the moment to migrate the english content
Aquí está mi novato multilingüe Q / sugerencia, ¿No puede simplemente pretender que creó el sitio D8 en inglés y ahora quiere hacerlo multilingüe?Respuestas:
Migrar desde los conceptos básicos de CSV
Como se indicó en otra parte, el código de migración solo recientemente (a partir de 8.2.xo 8.3.x) parece haberse asentado y hay muchas instrucciones antiguas, obsoletas e incorrectas en las publicaciones de blog en la web. Dicho esto, he tenido un 75% de éxito siguiendo las instrucciones en estos dos conjuntos de publicaciones de blog de Lucas Hedding y Ada Hernández en Mtech.
https://www.mtech-llc.com/blog/lucas-hedding/migrating-using-csv
https://www.mtech-llc.com/blog/ada-hernandez/how-migrate-images-drupal-8-using-csv-source
Hay una base de código de ejemplo que acompaña la configuración de Lucas en Github que cubre los conceptos básicos del primer ejemplo de publicación de blog CSV, pero no incluye ningún ayudante con la imagen o las migraciones de archivos.
Hay otro repositorio de ejemplo de Wunderkraut que incluye una migración de ejemplo CSV con migración de usuario, taxonomía, artículos e imágenes aquí:
Migración multilingüe desde CSV
Recomiendo comenzar con los conceptos básicos de CSV anteriores, luego pasar a esta sección. Realmente necesita tener scripts de migración separados para cada idioma.
Obtuve un 20% adicional del camino con esta publicación de blog, que describe los detalles sobre cómo modificar un archivo yaml de migración para admitir contenido multilingüe, incluido, para habilitar
translations: true
en ladestination
sección, agregar ellangcode:
campo en laprocess
sección para una entidades linguales (como nodos y términos) y para agregar ellanguage:
parámetro para el procesamiento de campo específico en varios idiomasLa parte más difícil es descubrir cómo importar campos de archivos o imágenes (el 5% restante para mí). Ninguno de los ejemplos anteriores muestra cómo importar campos alternativos de imagen correctamente. En mi caso, tengo un campo de imagen que comparte la imagen, pero el atributo alt es traducible. Descubrí cómo importar el campo alternativo básico al nodo de idioma predeterminado por mi cuenta, pero tengo problemas para que la importación use el mismo texto alternativo pero diferente para otros idiomas. El usuario @Vasi descubrió la solución agregando un campo adicional llamado
content_translation_source
en el paso del proceso de la migración de idioma extranjero YAML. Más detalles con un ejemplo completo aquí:Discusión adicional
Finalmente, hay una discusión aquí también:
fuente
content_translation_source
campo en laprocess
sección de la traducción del idioma extranjero, el valor debe establecerse en el código de idioma del idioma original importado. Vea la respuesta de Vasi en el enlace de arriba. También actualizaré mi publicación para reflejar esta solución.necesita ambas tareas de migración, los archivos yml en la carpeta de migración:
Luego, en el complemento (MigrateExternalTranslatedTestSource.php), debe leer su .csv (in
initializeIterator()
) en la estructura de la matriz de importación:fuente