Wie migriere ich mehrsprachige Inhalte von CSV nach Drupal 8?

8

Ich komme aus dem Lesen Mit der neuen Drupal 8-Migrations-API / -Modul- und Inhaltsmigration: CSV zu Drupal 8 ist der Prozess zum Erstellen einer Migration sehr klar und funktioniert, aber ich kann nicht finden, wie Inhalte auf eine mehrsprachige Site migriert werden. In der Migrate API-Übersicht kann ich keine Informationen dazu finden.

Wie kann ich mehrsprachige Inhalte migrieren?

UPDATE: Ich habe ein Beispiel gefunden: https://github.com/drupal/drupal/tree/8.3.x/core/modules/migrate/tests/modules/migrate_external_translated_test

Ich konnte im Moment den englischen Inhalt migrieren, aber nicht die Übersetzungen.

Adrian Cid Almaguer
quelle
1
Haftungsausschluss: Ich habe noch nie eine mehrsprachige Website erstellt. I was able for the moment to migrate the english contentHier ist mein mehrsprachiger Neuling Q / Vorschlag: Können Sie nicht einfach so tun, als hätten Sie die D8-Site auf Englisch erstellt, und jetzt möchten Sie sie mehrsprachig machen?
Kein Sssweat
@NoSssweat Ich habe eine mehrsprachige Seite. Ich habe in der CSV-Datei die Informationen in zwei Sprachen und ich muss aus dieser Datei die Knoten in zwei Sprachen erstellen (der Knoten in Englisch und seine Übersetzung in Französisch)
Adrian Cid Almaguer
@NoSssweat Kannst du eine Antwort mit den Schritten dazu posten?
Adrian Cid Almaguer
@NoSssweat Text mit Format und Textfeldern
Adrian Cid Almaguer
Es stellt sich heraus, dass ich weit weg bin, ich hoffe, diese 2 Videos helfen dir
No Sssweat

Antworten:

3

Migrieren Sie von den CSV-Grundlagen

Wie an anderer Stelle erwähnt, hat sich der Migrationscode erst vor kurzem (ab 8.2.x oder 8.3.x) beruhigt, und in Blog-Posts im Internet gibt es viele alte, veraltete und falsche Anweisungen. Davon abgesehen hatte ich ungefähr 75% Erfolg, als ich den Anweisungen in diesen beiden Blog-Posts von Lucas Hedding und Ada Hernández von Mtech folgte.

Bei Github gibt es ein begleitendes Beispiel für die Codebasis von Lucas, das die Grundlagen des ersten Beispiels für einen CSV-Blogbeitrag behandelt, jedoch keine Helfer bei der Bild- oder Dateimigration enthält.

Es gibt ein weiteres Beispiel-Repository von Wunderkraut, das eine CSV-Beispielmigration mit Benutzer-, Taxonomie-, Artikel- und Bildmigration enthält:

Mehrsprachige Migration von CSV

Ich empfehle, mit den obigen CSV-Grundlagen zu beginnen und dann zu diesem Abschnitt überzugehen. Sie müssen wirklich separate Migrationsskripte für jede Sprache haben.

Ich habe ein zusätzliches 20% des Weges dorthin mit dieser Blog - Post, die die Details erläutert , wie eine Migration yaml Datei zu ändern , zu unterstützen mehrsprachige Inhalte einschließlich, zu ermöglichen , translations: truein dem destinationAbschnitt, der das hinzuzufügen langcode:Feld im processAbschnitt für die richtigen multi- linguale Entitäten (wie Knoten und Begriffe) und Hinzufügen des language:Parameters für die spezifische mehrsprachige Feldverarbeitung.

Ich habe festgestellt, dass es am schwierigsten ist, herauszufinden, wie Datei- oder Bildfelder importiert werden (die restlichen 5% für mich). Keines der obigen Beispiele zeigt, wie Bildaltfelder richtig importiert werden. In meinem Fall habe ich ein Bildfeld, das das Bild teilt, aber das alt-Attribut ist übersetzbar. Ich habe herausgefunden, wie ich das grundlegende Alt-Feld selbst in den Standard-Sprachknoten importieren kann, aber ich habe Probleme, den Import so zu gestalten, dass für andere Sprachen dieselbe FID, aber ein anderer Alt-Text verwendet wird. Die Lösung wurde vom Benutzer @Vasi durch Hinzufügen eines zusätzlichen Felds herausgefunden, content_translation_sourcedas im Prozessschritt der Fremdsprachenmigration YAML aufgerufen wird . Weitere Details mit vollständigem Beispiel hier:

Zusätzliche Diskussion

Schließlich wird auch hier diskutiert:

James Wilson
quelle
1
Ich habe eine Folgefrage für mein verbleibendes Problem hier erstellt: drupal.stackexchange.com/questions/229750/…
JamesWilson
Danke, ich werde den Code mit den Informationen in Ihrer Antwort testen
Adrian Cid Almaguer
1
Es stellt sich heraus, dass der fehlende Schlüssel hier darin besteht, ein content_translation_sourceFeld im processAbschnitt der Fremdsprachenübersetzung hinzuzufügen. Der Wert sollte auf den Sprachcode der importierten Originalsprache gesetzt werden. Siehe Vasis Antwort auf den obigen Link. Ich werde auch meinen Beitrag aktualisieren, um diesen Fix widerzuspiegeln.
James Wilson
3

Sie benötigen beide Migrationsaufgaben, die yml-Dateien im Migrationsordner:

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

Dann müssen Sie im Plugin (MigrateExternalTranslatedTestSource.php) Ihre .csv (in initializeIterator()) in die Struktur des Import-Arrays einlesen:

  /**
   * 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'],
   ];
rémy
quelle