Drupal 8.)でパラグラフを翻訳しようとしています。修正済みとマークされている このバグレポート によると、機能するはずです。
#2543258:変換できないフィールドのエンティティ参照が正しい変換で表示されないも修正される予定です。
これが何か関係があるかどうかはわかりません。今、私は行き詰まっています。これが本当にうまくいくか動作するかどうかもわかりません。
私は次のことをしています:
簡単だと思いましたが、意外と難しいことがわかりました。 Drupal\Core\Entity\Entity\EntityViewDisplayクラスで、次のセクションを発見しました。
_ // The language of the field values to display is already determined
// in the incoming $entity. The formatter should build its output of
// those values using:
// - the entity language if the entity is translatable,
// - the current "content language" otherwise.
if ($entity instanceof TranslatableInterface && $entity->isTranslatable()) {
$view_langcode = $entity->language()->getId();
}
else {
$view_langcode = NULL;
}
_
_$view_langcode
_をNULL
に設定すると、動作するようです。明らかに、メインエンティティから言語を取得します。しかし、これをどのように(プログラム的にもUIを介しても)変更する方法がわかりません。明示的に$node = $node->getTranslation("en");
を使用し、結果に対してgetFields()
を呼び出しても、動作しないようです。翻訳された言語でフィールドをレンダリングする方法がまったく見つかりませんでした。
はい、そのAPIは言語の受け渡しをサポートしていません。
私はあなたがしていることにビューモードを使用することをお勧めします。それをUIで一緒にクリックし、そこに表示するフィールドを構成してから、$ node-> view( 'your_view_mode')を呼び出すだけです。それはうまくいくはずです。
Ctoolsモジュールが提供するEntity Viewブロックを使用することもできます。その場合、サイドバーをリージョンのブロックとして配置でき、カスタムコードをまったく必要としません。