web-dev-qa-db-ja.com

D8でNodeTypeに変換された値をプログラムで取得する方法は?

ノード変換を取得しています

$node = Node::load($nid);
$node->getTitle(); // returns title in en(default language).
$translated_node = \Drupal::service('entity.repository')->getTranslationFromContext($node, 'es');
$translated_node->getTitle(); // Returns translated title in es (spanish).

バンドルの翻訳を取得したい場合。上記のアプローチは機能しません。

親切なアドバイス?

$article = $node->bundle();
$article->label(); // returns "Article".
$translated = \Drupal::service('entity.repository')->getTranslationFromContext($article, 'es');
$translated->label(); // Also returns "Article". 

/admin/structure/types/manage/article/translate/es/editから提供されるバンドルの翻訳

3
JayKandari

構成オーバーライド言語を目的の言語に設定する必要があります。

_  $language = $language_manager->getLanguage('es');
  $original_language = $language_manager->getConfigOverrideLanguage();
  $language_manager->setConfigOverrideLanguage($language);

  // Load the node type here.       

  $language_manager->setConfigOverrideLanguage($original_language);
_

user_mail()から取得

3
Berdir