2つの言語のサイト(EN-FR)で翻訳できる2つのフィールドを持つコンテンツタイプがあるとします。タイトルとfield_tobe_translated
ノードごとに1行のみのこのコンテンツタイプのすべてのノードを(ビューに)リストしたいと思います。各行は次の形式である必要があります。
Title_FR-Title_EN-translatable_field_FR-translatable_field_EN
前の「-」は、テーブルタイプビューの列セパレータを意味します。
追加された質問:
このビューをフィルタリングして、「Title_FR!= Title_EN」の行のみを表示することはできますか?[他の翻訳可能なフィールドでもプロセスは同じだと思います]
追加のモジュールがなければ、ソースと同じ行に翻訳を表示する方法が見つかりませんでした。それがあればいいのに。
これらのモジュールは現在Drupalのセキュリティ勧告ポリシーの対象ではないため、賢明な選択ではない可能性があります。
妥協案は、情報が1行ではなく2行に広がることを示すことです。
つまり、最終的には次のようになります。
+----+------------+-------------------------+
| ID | Title | Field |
+----+------------+-------------------------+
| 1 | Title_FR_1 | translatable_field_FR_1 |
+----+------------+-------------------------+
| 1 | Title_EN_1 | translatable_field_EN_1 |
+----+------------+-------------------------+
| 2 | Title_FR_2 | translatable_field_FR_2 |
+----+------------+-------------------------+
| 2 | Title_EN_2 | translatable_field_EN_2 |
+----+------------+-------------------------+
| 3 | Title_FR_3 | translatable_field_FR_3 |
+----+------------+-------------------------+
| 3 | Title_EN_3 | translatable_field_EN_3 |
+----+------------+-------------------------+
古い方法であるとしても、私は方法があることを知っていました(私は箱から出してD8でそれが可能になると思っていました)。
Views Field View を使用してそれを行うことができます。これは基本的に、ビューを別のビューに埋め込み、フィールドとして表示します。
親ビューに追加する前に、子ビューを作成する必要があります。親と子は同じビューの2つのディスプレイにすることができますが、2つの異なるビューにある必要はありません。
あなたの場合、子ビューは1つのノードに関連するフィールドのみを表示するようにフィルタリングされ(通常のコンテキストフィルターを使用)、1つのノード情報が1つのテーブル行に表示される、スタイルの良い結果が得られます。
Content: Translation language
を追加してフランス語(または英語)に設定しますUnformatted list
およびFields
設定の下で、両方のフィールドをInlineに設定します。区切り文字は|
のようになります。Content: ID
を追加して、次のように構成します。Content: Translation language
を追加して英語(または手順2で設定したものとは反対のフランス語)に設定します。Global: View
を追加し、[ビュー設定]で最初のドロップダウンからビュー名を選択しますGlobal: View
をもう一度編集します。今回は、手順1で作成した正確なビューの表示を選択できます。{{ raw_fields.nid }}
を入力するか、ケースで意味のあるものを入力して、置換パターン同じ行に英語とフランス語のフィールドを持つノードのリストが表示されます。
インラインフィールドは、テーブルセルの外観を正確にエミュレートしない場合があります。これをテーブルセルとして正確に表示し、より複雑なHTMLを上書きして、それらをブレンドすることができます。