多言語コンテンツをCSVからDrupal 8に移行する方法


8

私は読んでから来た新しいDrupalの8移行APIを使用して/モジュールおよびコンテンツ移行:Drupalの8へのCSV移行を作成するためのプロセスは非常に明確で、その作品が、私はどのように多言語サイトに移行するコンテンツに見つけることができません。移行APIの概要私はこれについての情報を見つけることができません。

では、どうすれば多言語コンテンツを移行できますか?

更新: 私は例を見つけました:https : //github.com/drupal/drupal/tree/8.3.x/core/modules/migrate/tests/modules/migrate_external_translated_test

今のところ、英語のコンテンツは移行できましたが、翻訳は移行できませんでした。


1
免責事項:多言語サイトを作成したことがありません。 I was able for the moment to migrate the english contentこれが私の多言語初心者向けQ /提案です。英語でD8サイトを作成したばかりで、多言語にしたいと思っていませんか?
2017年

@NoSssweat多言語サイトを持っています。CSVファイルに2つの言語の情報があり、このファイルから2つの言語のノード(英語のノードとフランス語での翻訳)を作成する必要があります
Adrian Cid Almaguer

@NoSssweatあなたはそれを行うための手順で答えを投稿できますか?
Adrian Cid Almaguer 2017年

@NoSssweatテキストとフォーマットおよびテキストフィールド
Adrian Cid Almaguer 2017年

私は遠く離れていますが判明したが、私は願っていますこれらの2本のビデオを、あなたは助け
ノーSssweat

回答:


3

CSVの基本から移行する

他の場所で述べたように、移行コードは最近(8.2.xまたは8.3.xの時点で)落ち着くように思われ、Web上のブログ投稿には、古くて時代遅れの誤った指示がたくさんあります。そうは言っても、MtechのLucas HeddingとAdaHernándezによるこれら2つのブログ投稿の説明に従って、私は約75%成功しました。

最初のCSVブログ投稿の例の基本をカバーする、コードベースLucasの設定例がGithubに付属していますが、画像やファイルの移行に関するヘルパーは含まれていません。

Wunderkrautからの別のサンプルリポジトリがあり、ユーザー、分類、記事、画像の移行を含むCSVの移行例がここに含まれています。

CSVからの多言語移行

上記のCSVの基本から始めて、このセクションに進むことをお勧めします。実際には、言語ごとに個別の移行スクリプトが必要です。

私がサポートするために、移行YAMLファイルを変更する方法の詳細について概説し、このブログの記事と方法は、追加の20%を得た多言語コンテンツ有効にするために、含むのtranslations: trueではdestination、セクションを追加するlangcode:には、フィールドをprocess適切なマルチためのセクションをリンガルエンティティ(ノードや用語など)、およびlanguage:特定の多言語フィールド処理のパラメーターを追加します。

私は、ファイルまたは画像フィールドをインポートする方法を理解するのが最も難しい部分を見つけました(残りの5%は私にとって)。上記の例のいずれも、画像のaltフィールドを適切にインポートする方法を示していません。私の場合、画像を共有する画像フィールドがありますが、alt属性は翻訳可能です。基本的なaltフィールドをデフォルトの言語ノードに自分でインポートする方法を見つけましたが、インポートで他の言語に同じfidで異なるaltテキストを使用するのに問題があります。ソリューションは、ユーザー@Vasiによってcontent_translation_source、外国語の移行YAMLのプロセスステップで呼び出されるフィールドを追加することによって理解されました。ここに完全な例を含む詳細:

追加の議論

最後に、ここでもいくつかの議論が行われています:


1
私はここで私の残りの問題のためのフォローアップの質問を作成しました:drupal.stackexchange.com/questions/229750/...
ジェームズ・ウィルソン

おかげで、私はあなたの答えの情報を使ってコードをテストします
Adrian Cid Almaguer 2017

1
ここで欠けているキーは、外国語翻訳のセクションにcontent_translation_sourceフィールドを追加することであることがわかりました。process値は、インポートされた元の言語の言語コードに設定する必要があります。上記のリンクでVasiの回答を参照してください。この修正を反映するように投稿も更新します。
JamesWilson 2017年

3

両方の移行タスク、移行フォルダ内のymlファイルが必要です。

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

次に、プラグイン(MigrateExternalTranslatedTestSource.php)で、.csv(initializeIterator())をインポート配列の構造に読み込む必要があります。

  /**
   * 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'],
   ];
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.