CSVからDrupal8への多言語コンテンツの移行
公開: 2021-07-13任意のソースからDrupal8へのデータの移行が、簡単なデータ転送を可能にするさまざまなモジュールで簡単になりました。 Drupalでの移行は、データを外部ソースから現在のDrupalサイトに移動するプロセスの用語です。 ノード、ユーザー、構成、およびサイトの他のコンポーネントを含むデータを移行できます。
Drupalは、コンテンツを移行するための多くの方法を提供します。 ウェブサイトとデータのソースに応じて、それを行うための最良の方法を選択できます。 ただし、多言語データを移行すると、移行プロセスにさらにいくつかの手順が追加される可能性があります。 最初に基本コンテンツを移行してから、翻訳を移行する必要があります。 この記事では、CSVからDrupal 8への多言語コンテンツの移行について理解を深めるために、これらの手順について詳しく説明します。

必要なDrupal8移行モジュール
前述のように、Drupalには、簡単で手間のかからない移行に役立つ多数のオプションとモジュールが用意されています。 多言語コンテンツを移行するには、次のものが必要です。
- 移行:他のソースからDrupalにコンテンツを移行するための柔軟なフレームワークを提供します。
- Migrate plus:ソースプラグイン、プロセスプラグイン、宛先プラグイン、API拡張機能などの移行用のプラグインを提供します。
- Drupalの移行:コンテンツと構成の移行をサポートします。
- ソースCSVの移行: CSVファイルからDrupalにコンテンツをインポートするためのプラグインを提供します。
- 移行ツール:このモジュールは、移行に使用されるUIツールとDrushコマンドを提供します。
- 構成開発モジュール:このモジュールは、スクリプトを構成に変換します。
ステップ1:基本コンテンツの移行
基本コンテンツの移行を開始するには、最初にDrupal8でカスタムモジュールを作成する必要があります。

info.ymlにこれらのキーと値があることを確認してください。
移行スクリプトと呼ばれるyamlファイルを作成し、作成したカスタムモジュールのconfig / installディレクトリに配置する必要があります。 info.ymlのconfig_devel / installキーには、すべてのyamlファイルが書き込まれている必要があります。

これは、分類用語をインポートするためのサンプルyamlファイルです。 移行スクリプトには4つのセクションがあります。
- メタデータ: ID、ラベル、および移行グループIDが含まれます。
- ソース:ソースキーには、CSVファイルへのパスが含まれている必要があります。
- プロセス:フィールドとCSV列の間のマッピング。
- 宛先:インポートされたデータが保存される宛先。
yamlファイルノードの内容も同様に記述する必要があります。 唯一の違いは目的地です。

宛先プラグインはentity:nodeである必要があり、 default_bundleには、コンテンツがインポートされるコンテンツタイプのマシン名が含まれます。
すべてのyamlファイルを作成したら、yamlのIDをinfo.ymlに含める必要があります。 すべてが完了したら、カスタムモジュールを有効にします。
Drushコマンドdrushcdi <migrationid>を使用します。 ここで、移行IDはtechxmigrationです。 これにより、スクリプトが構成に変換されます。
コマンドを実行した後、 admin> structure> migrationに移動します。 リストの移行をクリックすると、作成した移行グループが表示されます。 これにより、作成された移行スクリプトのリストが表示されます。

[実行]タブをクリックすると、使用可能な操作のリストが表示されます。


インポートとは、ソースからデータをプルすることです。
ロールバックすると、インポートされたデータが削除されます。
停止は、インポートまたはロールバックプロセスを中断することです。
プロセスがスタックすることがあります。 ステータスをアイドルに移行するには、リセットを使用します。
ユーザー、段落などのさまざまなエンティティのデータを移行する方法の詳細については、CSVインポートをチェックしてDrupal7から8に移行します-完全なガイド。
ステップ2:基本コンテンツの翻訳を移行する
Drupal 8 Webサイトで多言語コンテンツを既に有効にしている場合は、最初のステップをスキップできます。 多言語のDrupal8 Webサイトを作成する方法(および必要になる理由)を知りたい場合は、この記事を確認してください。
1.DrupalWebサイトに言語を追加する
翻訳をインポートするには、まずWebサイトを多言語にする必要があります。 サイトに言語をダウンロードする方法を見てみましょう。
- 言語とコンテンツの翻訳モジュールを有効にします。 これらはコアモジュールです。
- / admin / config / regionalおよびlanguage / language / addlanguageに移動します。

- ドロップダウンをクリックすると、言語のリストが表示されます。 サイトで必要な言語を選択し、[言語の追加]をクリックします。 これにより、サイトの言語がダウンロードされます。
2.エンティティの翻訳を有効にする
必要な言語をインストールしたら、翻訳をコンテンツにインポートまたは追加する前に、エンティティの翻訳を有効にする必要があります。 これについては、 admin / config / regional / contenttranslationに移動してください。 翻訳を有効にするエンティティを選択し、[構成の保存]をクリックします。
この例では、ブログコンテンツタイプをインポートしているため、ブログコンテンツタイプの翻訳を有効にします。

3.移行ファイルを更新します
翻訳をインポートするためにyamlファイルに加える必要のある変更がいくつかあります。 翻訳されたコンテンツのCSVファイルのパスをベースコンテンツとして指定すると、翻訳されたコンテンツは別のファイルに保存されます。 用語翻訳の変更。

スクリプトのプロセスセクションに新しいキーtidを追加します。プラグインは移行、ソースはID 、移行値はベースコンテンツ移行スクリプトの移行IDである必要があります。
ノード移行の場合は、プロセスセクションに新しいキーnidを追加します。 ここで、移行キーには、ベースコンテンツ移行スクリプトの移行IDの値が含まれます。

追加する必要があるもう1つのキーは、値をtrueに設定した変換です。 これは、エンティティに関係なく、すべての翻訳移行スクリプトの移行先セクションに追加する必要があります。

langcodeキーを使用して、翻訳のインポート先の言語を定義します。 この例では、日本語の翻訳をインポートしているので、値はjaになります。

これらの変更は、これらのコンテンツが新しいノードではなく翻訳として扱われるベースコンテンツの移行からコンテンツのIDを取得するようにスクリプトに指示します。
覚えておくべきポイント
- インポートプロセスは正常に行われる必要があります。 たとえば、用語がノードで参照されている場合、用語はノードの内容の前に最初にインポートする必要があります。
- 翻訳をインポートする前に、エンティティの翻訳を有効にします。
- CSVファイルの翻訳内容の順序は、基本内容と同じである必要があります。 つまり、基本コンテンツとその翻訳は、CSVファイルの同じ行にある必要があります。
- 最初にベースコンテンツをインポートし、次に翻訳コンテンツをインポートします。 それ以外の場合は、両方とも個別のコンテンツとして扱われます。
