Làm cách nào để di chuyển nội dung đa ngôn ngữ từ CSV sang Drupal 8?


8

Tôi đến từ việc đọc Sử dụng API / Mô-đunDi chuyển nội dung Drupal 8 mới: CSV sang Drupal 8 , quá trình tạo di chuyển rất rõ ràng và hoạt động, nhưng tôi không thể tìm cách di chuyển nội dung sang trang đa ngôn ngữ. Trong tổng quan API di chuyển, tôi không thể tìm thấy bất kỳ thông tin nào về việc này.

Vì vậy, làm thế nào tôi có thể di chuyển nội dung đa ngôn ngữ?

CẬP NHẬT: Tôi tìm thấy một ví dụ: https://github.com/drupal/drupal/tree/8.3.x/core/modules/migrate/tests/modules/migrate_external_translated_test

Tôi đã có thể di chuyển nội dung tiếng Anh nhưng không phải là bản dịch.


1
Tuyên bố miễn trừ trách nhiệm: Tôi chưa bao giờ tạo một trang web đa ngôn ngữ trước đây. I was able for the moment to migrate the english contentDưới đây là Q / đề xuất đa ngôn ngữ của tôi, Bạn không thể giả vờ rằng bạn vừa tạo trang web D8 bằng tiếng Anh và bây giờ bạn muốn làm cho nó đa ngôn ngữ?
Không có Sssweat

@NoSssweat Tôi có một trang web đa ngôn ngữ. Tôi có trong tệp CSV thông tin bằng hai ngôn ngữ và tôi cần tạo từ tệp này các nút bằng hai ngôn ngữ (nút bằng tiếng Anh và bản dịch của mình bằng tiếng Pháp)
Adrian Cid Almaguer

@NoSssweat bạn có thể đăng câu trả lời với các bước để làm điều đó không?
Adrian Cid Almaguer

@NoSssweat văn bản với các trường định dạng và văn bản
Adrian Cid Almaguer

Hóa ra tôi đang đi, tôi hy vọng 2 video này sẽ giúp bạn
Không Sssweat

Câu trả lời:


3

Di chuyển từ cơ bản CSV

Như đã nêu ở nơi khác, mã di chuyển chỉ mới xuất hiện gần đây (kể từ 8.2.x hoặc 8.3.x) dường như đã ổn định và có vô số hướng dẫn cũ, lỗi thời và không chính xác trong các bài đăng trên blog trên web. Điều đó đang được nói, tôi đã có khoảng 75% thành công theo hướng dẫn trên hai bộ bài đăng blog này từ Lucas Hpping và Ada Hernández tại Mtech.

Có một thiết lập mã cơ sở ví dụ Lucas đi kèm tại Github bao gồm những điều cơ bản của ví dụ bài đăng trên blog CSV đầu tiên, nhưng nó không bao gồm bất kỳ người trợ giúp nào với việc di chuyển hình ảnh hoặc tệp.

Có một kho lưu trữ ví dụ khác từ Wunderkraut bao gồm di chuyển ví dụ CSV với di chuyển người dùng, phân loại, bài viết và hình ảnh ở đây:

Di chuyển đa ngôn ngữ từ CSV

Tôi khuyên bạn nên bắt đầu với những điều cơ bản về CSV ở trên, sau đó chuyển sang phần này. Bạn thực sự cần phải có các tập lệnh di chuyển riêng cho từng ngôn ngữ.

Tôi đã nhận được thêm 20% cách với bài đăng trên blog này, trong đó nêu ra các chi tiết về cách sửa đổi tệp yaml di chuyển để hỗ trợ nội dung đa ngôn ngữ bao gồm, để bật translations: truetrong destinationphần, để thêm langcode:trường trong processphần cho đa mục thích hợp các thực thể ngôn ngữ (như các nút và thuật ngữ) và để thêm language:tham số cho xử lý trường đa ngôn ngữ cụ thể.

Tôi đã tìm thấy phần khó nhất để tìm ra cách nhập trường tệp hoặc hình ảnh (5% còn lại cho tôi). Cả hai ví dụ trên đều thể hiện cách nhập trường alt hình ảnh đúng cách. Trong trường hợp của tôi, tôi có một trường hình ảnh chia sẻ hình ảnh, nhưng thuộc tính alt có thể dịch được. Tôi đã tự mình tìm ra cách nhập trường alt cơ bản vào nút ngôn ngữ mặc định, nhưng tôi gặp khó khăn khi nhập để sử dụng cùng một văn bản thay thế fid nhưng khác cho các ngôn ngữ khác. Giải pháp đã được người dùng @Vasi tìm ra bằng cách thêm một trường bổ sung được gọi content_translation_sourcevào bước quy trình di chuyển ngoại ngữ YAML. Thêm chi tiết với ví dụ đầy đủ ở đây:

Thảo luận thêm

Cuối cùng, có một số cuộc thảo luận đang diễn ra ở đây:


1
Tôi đã tạo một câu hỏi tiếp theo cho vấn đề còn lại của tôi ở đây: drupal.stackexchange.com/questions/229750/ợi
JamesWilson

cảm ơn, tôi sẽ kiểm tra mã với thông tin trong câu trả lời của bạn
Adrian Cid Almaguer

1
Hóa ra khóa bị thiếu ở đây là thêm một content_translation_sourcetrường trên processphần bản dịch tiếng nước ngoài, giá trị nên được đặt thành mã ngôn ngữ của ngôn ngữ gốc được nhập. Xem câu trả lời của Vasi trên liên kết ở trên. Tôi cũng sẽ cập nhật bài viết của mình để phản ánh sửa lỗi này.
JamesWilson

3

bạn cần cả hai tác vụ di chuyển, các tệp yml trong thư mục di chuyển:

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

Sau đó, trong Plugin (MigrateExternalTranslatedTestSource.php), bạn cần đọc .csv (in initializeIterator()) của mình vào cấu trúc của mảng nhập:

  /**
   * 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'],
   ];
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.