將多語言內容從 CSV 遷移到 Drupal 8

已發表: 2021-07-13

現在,通過各種模塊可以輕鬆地將數據從任何來源遷移到 Drupal 8,這些模塊允許輕鬆傳輸數據。 Drupal 中的遷移是將數據從外部源移動到當前 Drupal 站點的任何過程的術語。 您可以遷移包括節點、用戶、配置和站點的任何其他組件的數據。

Drupal 為您提供了多種遷移內容的方法。 根據網站和數據來源,您可以選擇最佳方式。 但是,遷移多語言數據可以為您的遷移過程添加更多步驟。 您首先需要遷移基本內容,然後再遷移翻譯。 在本文中,我們將詳細介紹這些步驟,以幫助您更好地了解將多語言內容從 CSV 遷移到 Drupal 8。

CSV 導入

您需要的 Drupal 8 遷移模塊

如前所述,Drupal 提供了大量選項和模塊,可以幫助您輕鬆、輕鬆地遷移。 要遷移多語言內容,您需要:

  1. 遷移:提供一個靈活的框架,用於將內容從其他來源遷移到 Drupal。
  2. Migrate plus:提供用於遷移的插件,如源插件、流程插件、目標插件和 API 擴展。
  3. 遷移 Drupal:提供對遷移內容和配置的支持。
  4. 遷移源 CSV:提供插件以將內容從 CSV 文件導入 Drupal。
  5. 遷移工具:此模塊提供用於遷移的 UI 工具和 Drush 命令。
  6. 配置開發模塊:該模塊將腳本轉換為配置。

步驟 1:遷移基礎內容

要開始遷移基本內容,我們首先需要在 Drupal 8 中創建一個自定義模塊。

創建自定義模塊

確保info.yml具有這些鍵和值。

您需要創建yaml文件(稱為遷移腳本),並將其放置在創建的自定義模塊的 config/install 目錄中。 info.yml 的 config_devel /install鍵應該寫了所有的 yaml 文件。

Yaml 文件

這是用於導入分類術語的示例 yaml 文件。 遷移腳本有 4 個部分:

  1. 元數據:將具有 id、標籤和遷移組 id。
  2. 來源:來源密鑰應包含 CSV 文件的路徑。
  3. 過程:字段和CSV 列之間的映射。
  4. 目的地:保存導入數據的目的地。

yaml文件節點內容也應該類似寫。 唯一的區別是目的地。

實體節點

目標插件應該是entity:node並且default_bundle將具有導入內容的內容類型的機器名稱。

創建所有 yaml 文件後,yaml 的 ID 應包含在info.yml 中。 一切都完成後,啟用自定義模塊。

使用 Drush 命令drush cdi <migration id> 。 這裡的遷移 id 是techx migration 。 這會將腳本轉換為配置。

運行命令後轉到admin>structure>migration 。 您將通過單擊列表遷移找到您創建的遷移組。 這將顯示創建的遷移腳本列表。

操作

單擊執行選項卡將顯示可用操作列表:

可用操作

導入是從源中拉取數據。

回滾將刪除導入的數據。

Stop是中斷導入或回滾過程。

有時進程會卡住。 要將狀態移至空閒,請使用重置

有關如何遷移不同實體(如用戶、段落)的數據的更詳細信息,請查看 CSV 導入以遷移 Drupal 7 到 8 - 完整指南。

第 2 步:遷移基礎內容的翻譯

如果您已經在 Drupal 8 網站上啟用了多語言內容,則可以跳過第一步。 如果您想知道如何創建多語言 Drupal 8 網站(以及您為什麼需要一個網站),請查看這篇文章。

1. 為 Drupal 網站添加語言

要導入翻譯,首先我們必須使我們的網站多語言。 讓我們看看如何將語言下載到站點。

  1. 啟用語言內容翻譯模塊。 這些是核心模塊。
  2. 轉到 /admin/config/regional 和 language/language/添加語言。添加語言
  3. 單擊下拉菜單將為您提供語言列表。 在網站上選擇您想要的語言,然後單擊添加語言。 這將下載您網站的語言。

2. 為實體啟用翻譯

一旦我們安裝了我們需要的語言,我們必須在導入或將翻譯添加到內容之前啟用實體的翻譯。 為此,請轉到admin/config/regional/content translation 。 選擇要為其啟用轉換的實體,然後單擊保存配置

在此示例中,我將導入博客內容類型,因此我將啟用博客內容類型的翻譯。

語

3. 更新遷移文件

需要對 yaml 文件進行一些更改才能導入翻譯。 給出翻譯內容的CSV文件的路徑作為基本內容,翻譯內容存儲在不同的文件中。 術語翻譯的變化。

時間

在腳本的 process 部分添加一個新的 key tid插件遷移,源id遷移值應為其基本內容遷移腳本的遷移 id

對於節點遷移,在進程部分添加一個新的密鑰nid 。 這裡的遷移鍵將具有其基本內容遷移腳本的遷移 ID的值。

來源 ID

應該添加的另一個鍵是值設置為true 的翻譯。 無論實體如何,這都應添加到所有翻譯遷移腳本的目標部分。

目的地

使用langcode鍵定義翻譯導入的語言。 在這個例子中,我導入了日語翻譯,所以值將是ja

語言代碼

這些更改告訴腳本從基本內容遷移中獲取內容的 id,這些內容從中被視為翻譯而不是新節點。

要記住的要點

  • 導入過程應該按順序進行。 例如,如果在節點中引用術語,則應在節點內容之前先導入術語。
  • 在導入翻譯之前啟用實體的翻譯。
  • CSV 文件中翻譯內容的順序應與基本內容相同。 也就是說,基本內容及其翻譯應該在 CSV 文件的同一行中。
  • 先導入基礎內容,再導入翻譯內容。 否則兩者都將被視為單獨的內容。