Bagaimana cara memigrasi konten multibahasa dari CSV ke Drupal 8?

8

Saya berasal dari membaca Menggunakan API Migrasi Drupal 8 baru / Modul dan Migrasi Konten: CSV ke Drupal 8 proses untuk membuat migrasi sangat jelas dan berfungsi, tetapi saya tidak dapat menemukan cara memigrasi konten ke situs Multilingual. Dalam ikhtisar Migrasi API saya tidak dapat menemukan informasi tentang ini.

Jadi, bagaimana saya bisa memigrasi konten multibahasa?

UPDATE: Saya menemukan contoh: https://github.com/drupal/drupal/tree/8.3.x/core/modules/migrate/tests/modules/migrate_external_translated_test

Saat ini saya dapat memigrasikan konten bahasa Inggris tetapi bukan terjemahannya.

Adrian Cid Almaguer
sumber
1
Penafian: Saya belum pernah membuat situs multi-bahasa sebelumnya. I was able for the moment to migrate the english contentIni adalah pemula T / multibahasa saya Q / saran, tidak bisakah Anda berpura-pura baru saja membuat situs D8 dalam bahasa Inggris dan sekarang Anda ingin menjadikannya multibahasa?
No Sssweat
@NoSssweat Saya punya situs Multilingual. Saya memiliki di CSV file informasi dalam dua bahasa dan saya harus membuat dari file ini node dalam dua bahasa (simpul dalam bahasa Inggris dan terjemahannya dalam bahasa Perancis)
Adrian Cid Almaguer
@NoSssweat dapatkah Anda mengirim jawaban dengan langkah-langkah untuk melakukannya?
Adrian Cid Almaguer
@NoSssweat teks dengan format dan bidang teks
Adrian Cid Almaguer
Ternyata saya sedang pergi, saya harap 2 video ini membantu Anda
No Sssweat

Jawaban:

3

Bermigrasi dari dasar-dasar CSV

Seperti yang dinyatakan di tempat lain, kode migrasi hanya baru-baru ini (pada 8.2.x atau 8.3.x) tampaknya tenang dan ada banyak instruksi lama, ketinggalan jaman dan salah dalam posting blog di web. Yang sedang berkata, saya sudah sekitar 75% berhasil mengikuti instruksi pada dua set posting blog ini dari Lucas Hedding dan Ada Hernández di Mtech.

Ada contoh pengaturan basis kode Lucas yang menyertainya di Github yang mencakup dasar-dasar contoh posting blog CSV pertama, tetapi tidak menyertakan pembantu dengan migrasi gambar atau file.

Ada contoh repositori dari Wunderkraut yang menyertakan migrasi contoh CSV dengan pengguna, taksonomi, migrasi artikel dan gambar di sini:

Migrasi multibahasa dari CSV

Saya sarankan memulai dengan dasar-dasar CSV di atas, lalu pindah ke bagian ini. Anda benar-benar harus memiliki skrip migrasi terpisah untuk setiap bahasa.

Saya mendapat tambahan 20% dari perjalanan ke sana dengan posting blog ini, yang menguraikan rincian cara memodifikasi file yaml migrasi untuk mendukung konten multibahasa termasuk, untuk mengaktifkan translations: truedi destinationbagian ini, untuk menambahkan langcode:bidang di processbagian untuk multi entitas bahasa (seperti node dan istilah), dan untuk menambahkan language:parameter untuk pemrosesan bidang multi-bahasa tertentu.

Saya telah menemukan bagian yang paling sulit untuk mencari tahu cara mengimpor file atau bidang gambar (sisanya 5% untuk saya). Tak satu pun dari contoh di atas yang menunjukkan cara mengimpor bidang alt gambar dengan benar. Dalam kasus saya, saya memiliki bidang gambar yang berbagi gambar, tetapi atribut alt dapat diterjemahkan. Saya menemukan cara mengimpor bidang alt dasar ke simpul bahasa default saya sendiri, tetapi saya mengalami kesulitan untuk mendapatkan impor menggunakan teks alt yang sama tetapi berbeda untuk bahasa lain. Solusi ini dipecahkan oleh pengguna @Vasi dengan menambahkan bidang tambahan yang disebut content_translation_sourcepada langkah proses migrasi bahasa asing YAML. Lebih detail dengan contoh lengkap di sini:

Diskusi Tambahan

Akhirnya, ada beberapa diskusi yang terjadi di sini juga:

JamesWilson
sumber
1
Saya telah membuat pertanyaan tindak lanjut untuk masalah saya yang tersisa di sini: drupal.stackexchange.com/questions/229750/…
JamesWilson
terima kasih, saya akan menguji kodenya dengan info dalam jawaban Anda
Adrian Cid Almaguer
1
Ternyata kunci yang hilang di sini adalah menambahkan content_translation_sourcebidang pada processbagian terjemahan bahasa asing, nilai harus ditetapkan ke kode bahasa dari bahasa asli yang diimpor. Lihat jawaban Vasi pada tautan di atas. Saya juga akan memperbarui posting saya untuk mencerminkan perbaikan ini.
JamesWilson
3

Anda memerlukan kedua tugas migrasi, file yml di folder migrasi:

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

Kemudian di Plugin (MigrateExternalTranslatedTestSource.php), Anda perlu membaca .csv (in initializeIterator()) ke dalam struktur array impor:

  /**
   * 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'],
   ];
Remy
sumber