既存のDrupalサイトへのエンティティ翻訳と多言語機能を有効にしました。現在、サイト内のすべてのノードは言語中立として設定されているため、翻訳タブは表示されません。ノードを編集して言語を手動で英語に変更すると、翻訳タブが表示され、他の言語の翻訳コンテンツを追加できます。
VBOを試しました- で説明されているエンティティ値の演算子を変更する方法サイトを多言語にするときに、ノードの言語を既存のコンテンツに一括で設定するにはどうすればよいですか? しかし、VBOを介して言語をニュートラルから英語に変更した後、後でノードを編集するときに本文のコンテンツが表示されません。値を言語中立に戻すと、本文のコンテンツが表示されます。フィールド本体の言語は、ビューの一括操作で変更されないようです。
ノードを翻訳できるように、一括操作を実行してノードの言語を一括で変更できる方法はありますか?
ありがとう
ああ、はい、私はこの落とし穴を覚えています。サイトのデフォルト言語が英語であると仮定すると、言語中立ノードはすべて英語であると見なされます。データベースのノードテーブルを見ると、言語が「外」であることがわかります。これはコンテンツタイプごとなので、Language Neutral Basicページがあるとします。ここで英語の基本ページを追加すると、その本文は表示されませんが、データベースを確認すると、そこにあることがわかります(ノードの言語は「en」です)。
道徳的:同じコンテンツタイプのすべての英語のノードmustの言語が「und」または「en」に設定されているか、「en」に設定されているものは表示されません。 、重要なコンテンツタイプをRequire languageに設定します(Language Neutralを許可しないでください)([管理]-> [構造]-> [コンテンツタイプ]-> [編集]-> [多言語設定]の下)。
サイトで言語を一括設定する方法は次のとおりです。
ビューの一括最適化を使用して、変更するすべてのノードを選択し、[値の変更]オプションを使用して、値を必要な言語に変更します。
これを実行すると、ノードの編集時にフィールド値が表示されなくなるため、スクリプトを実行する必要があります。 UPDATE database.field_data_body SET language='en' WHERE bundle='page'
(必要に応じて、DB名、フィールド名、およびバンドルを使用します)。
重要:カスタムURLエイリアスがある場合、pathautoに問題があるため、このアプローチで上書きされますが、回避策があります。最初に/ admin/config/search/path/settingsに移動し、「 [アクションを更新]オプションを[何もしない]に変更します。古いエイリアスはそのままにしておきます。'ViewsBulk Operationsアクションを実行したら、この値を元に戻します。
これを行う1つの方法は、コードの記述を必要としません。
選択を制限する必要がある場合)、作成されたビューページに移動します。ビューページから、すべてのページのすべてのアイテムを選択するオプションを選択し、エンティティ値の変更アクションを実行します。
言語を選択して、[次へ]をクリックします。ノードの数が非常に多い場合は、すべてが一度に実行されないようにキューイング設定をいじる必要があるかもしれませんが、最初は1つのパスで実行してみます。 (注:必ず最初にバックアップをテストしてください!)
この投稿は、stackexchangeの別の投稿から取得します 元の投稿