Come migrare contenuti multilingue da CSV a Drupal 8?


8

Vengo dalla lettura Utilizzando la nuova API / modulo di migrazione Drupal 8 e migrazione dei contenuti: CSV a Drupal 8 il processo per creare una migrazione è molto chiaro e funziona, ma non riesco a trovare come migrare i contenuti su un sito multilingue. Nella panoramica dell'API di migrazione non riesco a trovare alcuna informazione al riguardo.

Quindi, come posso migrare contenuti multilingue?

AGGIORNAMENTO: ho trovato un esempio: https://github.com/drupal/drupal/tree/8.3.x/core/modules/migrate/tests/modules/migrate_external_translated_test

Per il momento sono stato in grado di migrare il contenuto inglese ma non le traduzioni.


1
Disclaimer: non ho mai creato un sito multilingue prima. I was able for the moment to migrate the english contentEcco il mio suggerimento / suggerimento per principianti multilingue, non puoi semplicemente fingere di aver appena creato il sito D8 in inglese e ora vuoi renderlo multilingue?
No Sssweat

@NoSssweat Ho un sito multilingue. Ho nel file CSV le informazioni in due lingue e ho bisogno di creare da questo file i nodi in due lingue (il nodo in inglese e la sua traduzione in francese)
Adrian Cid Almaguer

@NoSssweat puoi pubblicare una risposta con i passaggi per farlo?
Adrian Cid Almaguer il

@NoSssweat testo con formato e campi di testo
Adrian Cid Almaguer

Si scopre che sono lontana, spero che questi 2 video ti aiutino
No Sssweat

Risposte:


3

Migrare dalle basi CSV

Come affermato altrove, il codice di migrazione è sembrato stabilizzarsi solo di recente (a partire da 8.2.xo 8.3.x) e ci sono un sacco di istruzioni vecchie, obsolete e errate nei post del blog sul Web. Detto questo, ho avuto circa il 75% di successo seguendo le istruzioni su questi due set di post di blog di Lucas Hedding e Ada Hernández a Mtech.

Esiste un esempio di installazione di base di codice Lucas su Github che copre le basi del primo esempio di post sul blog CSV, ma non include alcun aiuto con le migrazioni di immagini o file.

C'è un altro repository di esempio di Wunderkraut che include una migrazione di esempio CSV con migrazione di utenti, tassonomia, articoli e immagini qui:

Migrazione multilingue da CSV

Consiglio di iniziare con le basi CSV sopra, quindi passare a questa sezione. È necessario disporre di script di migrazione separati per ogni lingua.

Ho ottenuto un ulteriore 20% del modo con questo post sul blog, che delinea i dettagli su come modificare un file yaml di migrazione per supportare il contenuto multilingue incluso, per abilitare translations: truenella destinationsezione, per aggiungere il langcode:campo nella processsezione per il corretto multi- entità linguali (come nodi e termini) e per aggiungere il language:parametro per l'elaborazione specifica del campo multilingue.

Ho trovato la parte più difficile da capire come importare campi di file o immagini (il restante 5% per me). Nessuno degli esempi sopra mostra come importare correttamente i campi alt dell'immagine. Nel mio caso ho un campo immagine che condivide l'immagine, ma l'attributo alt è traducibile. Ho capito come importare il campo alt di base nel nodo della lingua predefinita da solo, ma sto avendo problemi a ottenere l'importazione per usare lo stesso fid ma testo alternativo diverso per altre lingue. La soluzione è stata individuata dall'utente @Vasi aggiungendo un campo aggiuntivo chiamato content_translation_sourcenella fase del processo di migrazione della lingua straniera YAML. Maggiori dettagli con l'esempio completo qui:

Discussione aggiuntiva

Infine, ci sono alcune discussioni in corso anche qui:


1
Ho creato una domanda di follow-up per il mio problema rimanente qui: drupal.stackexchange.com/questions/229750/…
JamesWilson,

grazie, proverò il codice con le informazioni nella tua risposta
Adrian Cid Almaguer

1
Si scopre che la chiave mancante qui è quella di aggiungere un content_translation_sourcecampo nella processsezione della traduzione in lingua straniera, il valore deve essere impostato sul codice della lingua della lingua originale importata. Vedi la risposta di Vasi sul link sopra. Aggiornerò anche il mio post per riflettere questa correzione.
JamesWilson

3

hai bisogno di entrambe le attività di migrazione, i file yml nella cartella di migrazione:

migrate.migration.external_translated_test_node.yml
migrate.migration.external_translated_test_node_translation.yml

Quindi nel plugin (MigrateExternalTranslatedTestSource.php), devi leggere il tuo .csv (in initializeIterator()) nella struttura dell'array di importazione:

  /**
   * The data to import.
   *
   * @var array
   */
   protected $import = [
    ['name' => 'cat', 'title' => 'Cat', 'lang' => 'English'],
    ['name' => 'cat', 'title' => 'Chat', 'lang' => 'French'],
    ['name' => 'cat', 'title' => 'Gato', 'lang' => 'Spanish'],
    ['name' => 'dog', 'title' => 'Dog', 'lang' => 'English'],
    ['name' => 'dog', 'title' => 'Chien', 'lang' => 'French'],
    ['name' => 'monkey', 'title' => 'Monkey', 'lang' => 'English'],
   ];
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.