フィールドを使用したコンテンツタイプのリストであるビューがあります。 (私はまた、リレーションシップとコンテキストフィルターを使用しています。)
それらのフィールドの1つは「コンテンツへのリンク」です。
コンテンツタイプは翻訳可能です。ビューはTranslation language (= Interface text language selected for page)
によってフィルタリングされます。私の二次言語(ドイツ語)では、翻訳のあるノードのみが表示されます。ここまでは順調ですね。
レンダリング言語は次のように設定されています:Interface text language selected for page
。
ただし、レンダリングされた行は常にデフォルトの言語(/en
)、ページの残りの部分が二次言語(de
)でレンダリングされる場合でも。
正しい言語でリンクをレンダリングするために行を取得するにはどうすればよいですか?
これはバグであり、現在作業中です。ソリューションが提供されており、現在Needs review
とラベルが付けられています。おそらく、パッチを適用して自分でテストできます。
Drupal 8.4以前のバージョンでは、Path
フィールドの回避策とカスタムテキストフィールドを使用してリンクを作成することができました。
<a href="{{ path }}">{% trans %} View more {% endtrans %}</a>
Pathフィールドは、正しいパスプレフィックスで正しく翻訳されたリンクを出力します。ここを参照してください: Translate Content:Link to Content field on Views in Drupal 8 。しかし、Drupal 8.5では、Pathフィールドはサポートされなくなったため、パッチが適用されるか、更新がリリースされるまで待つ必要があります。
ビューに2つのフィールドを追加します。
「コンテンツ:Node ID」フィールドを表示から除外します。
このフィールドの出力をカスタムテキストで上書きします。
{% trans %} View more {% endtrans %}
[コンテンツ:翻訳言語]フィールドをカスタムリンクとして書き換えます。
{{ langcode_value }}/node/{{ nid }}
次に、admin/config/regional/translateに移動します。
表示を任意の言語でさらに翻訳できます:FILTER TRANSLATABLE STRINGS(詳細を表示)、言語に従って翻訳します
Jturpinによる回答がこの問題の解決に役立ちました。それに加えて、短くすることができます
{% trans %} View more {% endtrans %}
に
{{'View more'|t}}