如何以编程方式查询 drupal 9 中块的翻译内容

How to programmatically query the translated content of a block in drupal9

我创建了一个区块,默认语言是英文,翻译语言是中文。现在我在我的代码中查询这个块的内容:

$block = \Drupal::entityTypeManager()->getStorage('block_content')
      ->loadByProperties([
        'info' => $info,
        'langcode' => 'zh-hant'
      ]);

但是我得到的还是英文,我做错了什么?

您必须加载 block_content 个没有 langcode 条件的实体,然后通过 getTranslation():

获得您需要的语言的翻译
$blocks = \Drupal::entityTypeManager()->getStorage('block_content')
  ->loadByProperties([
    'info' => $info
  ]);
$translated_blocks = array_map(function ($block) {
  return $block->getTranslation('zh-hant');
}, $blocks);
// do somthing with $translated_blocks