Migrazione di contenuti multilingue da CSV a Drupal 8
Pubblicato: 2021-07-13La migrazione dei dati da qualsiasi origine a Drupal 8 è ora semplificata con vari moduli che consentono un facile trasferimento dei dati. Migrazione in Drupal è un termine per qualsiasi processo che sposta i dati da una fonte esterna al sito Drupal corrente. Puoi migrare i dati che includono nodi, utenti, configurazione e qualsiasi altro componente del sito.
Drupal ti offre molti modi per migrare i contenuti. A seconda del sito Web e della fonte dei dati, puoi scegliere il modo migliore per farlo. Tuttavia, la migrazione di dati multilingue può aggiungere alcuni passaggi in più al processo di migrazione. Dovrai prima migrare il contenuto di base e poi migrare le traduzioni. In questo articolo, elaboreremo questi passaggi per aiutarti a comprendere meglio la migrazione di contenuti multilingue da CSV a Drupal 8.

Moduli di migrazione Drupal 8 di cui avrai bisogno
Come accennato in precedenza, Drupal offre tantissime opzioni e moduli che possono aiutarti con una migrazione facile e senza problemi. Per la migrazione di contenuti multilingue, avrai bisogno di:
- Migrazione: fornisce un framework flessibile per la migrazione di contenuti in Drupal da altre fonti.
- Migrazione plus: fornisce plug-in per le migrazioni come plug-in di origine, plug-in di processo, plug-in di destinazione ed estensioni API.
- Migra Drupal: fornisce supporto per la migrazione di contenuti e configurazioni.
- Migra CSV sorgente: fornisce un plugin per importare contenuti in Drupal da un file CSV.
- Strumenti di migrazione: questo modulo fornisce strumenti dell'interfaccia utente e comandi Drush utilizzati per la migrazione.
- Modulo di sviluppo della configurazione: questo modulo converte lo script in configurazioni.
Passaggio 1: migrazione del contenuto di base
Per iniziare con la migrazione del contenuto di base, dovremo prima creare un modulo personalizzato in Drupal 8.

Assicurati che info.yml abbia queste chiavi e questi valori.
Dovrai creare file yaml , noti come script di migrazione, e inserirli nella directory config/install del modulo personalizzato creato. La chiave config_devel/install di info.yml dovrebbe avere tutti i file yaml scritti.

Questo è un file yaml di esempio per l'importazione di termini di tassonomia. Lo script di migrazione ha 4 sezioni:
- Metadati: avrà l'ID, l'etichetta e l'ID del gruppo di migrazione.
- Sorgente: la chiave sorgente dovrebbe avere il percorso del file CSV.
- Processo: la mappatura tra i campi e le colonne CSV.
- Destinazione: la destinazione in cui vengono salvati i dati importati.
Il contenuto del nodo del file yaml dovrebbe essere scritto in modo simile. L'unica differenza è la destinazione.

Il plug-in di destinazione dovrebbe essere entity:node e default_bundle avrà il nome della macchina del tipo di contenuto in cui viene importato il contenuto.
Dopo aver creato tutti i file yaml, gli ID di yaml dovrebbero essere inclusi in info.yml . Una volta fatto tutto, abilita il modulo personalizzato.
Usa il comando Drush drush cdi <id migrazione> . Qui l'id di migrazione è techx migrazione . Questo convertirà lo script in configurazioni.
Dopo aver eseguito il comando vai su admin>structure>migration . Troverai il gruppo di migrazione che hai creato facendo clic su elenco migrazione. Questo ti mostrerà l'elenco degli script di migrazione creati.

Facendo clic sulla scheda Esegui verrà visualizzato l'elenco delle operazioni disponibili:

L'importazione consiste nell'estrarre i dati dall'origine.
Il rollback eliminerà i dati importati.

Lo Stop serve per interrompere il processo di importazione o rollback.
A volte un processo si blocca. Per spostare lo stato in idle, viene utilizzato Reset .
Per informazioni più dettagliate su come migrare i dati di diverse entità come l'utente, paragrafo, controlla Importa CSV per migrare Drupal 7 to 8 - Una guida completa.
Passaggio 2: migrazione delle traduzioni del contenuto di base
Se hai già abilitato i contenuti multilingue sul tuo sito web Drupal 8, puoi saltare il primo passaggio. Se vuoi sapere come creare siti web multilingue Drupal 8 (e perché potresti averne bisogno), dai un'occhiata a questo articolo.
1. Aggiungere la lingua al sito web di Drupal
Per importare le traduzioni, per prima cosa dobbiamo rendere multilingue il nostro sito web. Vediamo come scaricare le lingue sul sito.
- Abilita il modulo di traduzione di lingua e contenuto . Questi sono i moduli principali.
- Vai a /admin/config/regional e language/language/add language.

- Facendo clic sul menu a discesa viene visualizzato un elenco di lingue. Seleziona la lingua che desideri sul sito e clicca su Aggiungi lingua . Questo scaricherà la lingua per il tuo sito.
2. Abilitazione della traduzione per le entità
Una volta installate le lingue di cui abbiamo bisogno, dobbiamo abilitare le traduzioni per le entità prima di importare o aggiungere le traduzioni al contenuto. Per questo, vai su admin/config/regional/content translation . Seleziona le entità a cui vuoi abilitare la traduzione e clicca su Salva configurazioni .
In questo esempio, sto importando il tipo di contenuto del blog e quindi abiliterò la traduzione per il tipo di contenuto del blog.

3. Aggiorna i file di migrazione
Ci sono alcune modifiche che devono essere apportate ai file yaml per importare le traduzioni. Fornisci il percorso del file CSV del contenuto tradotto come contenuto di base e i contenuti tradotti vengono archiviati in file diversi. Modifiche nella traduzione dei termini.

Aggiungi una nuova chiave tid nella sezione del processo dello script con il plug-in come migrazione, sorgente come id e il valore di migrazione dovrebbe essere l' ID di migrazione del suo script di migrazione del contenuto di base.
Per la migrazione del nodo, aggiungi una nuova chiave nid nella sezione del processo. Qui la chiave di migrazione avrà il valore dell'id di migrazione del suo script di migrazione del contenuto di base.

Un'altra chiave da aggiungere sono le traduzioni con il valore impostato su true . Questo dovrebbe essere aggiunto nella sezione di destinazione di tutti gli script di migrazione della traduzione, indipendentemente dalle entità.

Definire la lingua in cui viene importata la traduzione utilizzando il tasto langcode . In questo esempio sto importando traduzioni giapponesi, quindi il valore sarà ja .

Queste modifiche dicono allo script di prendere l'id del contenuto dalla migrazione del contenuto di base da cui questi contenuti vengono trattati come traduzioni piuttosto che come un nuovo nodo.
Punti da ricordare
- Il processo di importazione dovrebbe andare in ordine. Ad esempio, se si fa riferimento ai termini nel nodo, i termini devono essere importati prima del contenuto del nodo.
- Abilita la traduzione per le entità prima di importare le traduzioni.
- L'ordine dei contenuti della traduzione nel file CSV dovrebbe essere lo stesso del contenuto di base. Cioè, il contenuto di base e le sue traduzioni dovrebbero trovarsi nella stessa riga nel file CSV.
- Importa prima il contenuto di base e poi il contenuto della traduzione. Altrimenti entrambi saranno trattati come contenuti individuali.
