You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Drupal 9中用entityTypeManager获取指定语言的翻译分类术语?

在Drupal 9中获取翻译后的分类术语

当你通过loadTree(第四个参数传TRUE)获取到完整的TaxonomyTerm实体对象后,直接调用实体的getTranslation()方法就能拿到指定语言的翻译版本,同时建议先检查术语是否存在对应翻译,避免报错。

修改后的完整代码如下:

$language = \Drupal::languageManager()->getCurrentLanguage();
$tree = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadTree('secteur', 0, 1, TRUE);
$result = [];

foreach ($tree as $term) {
    // 先检查当前术语是否有目标语言的翻译
    if ($term->hasTranslation($language->getId())) {
        $translated_term = $term->getTranslation($language->getId());
        $result[$term->id()] = $translated_term->get('name')->value;
    } else {
        // 无翻译时的 fallback 逻辑,可根据需求调整
        $result[$term->id()] = $term->get('name')->value;
    }
}

$variables['parentterms'] = $result;

补充说明:

  • 用$term->id()替代$term->get('tid')->value是更简洁的Drupal实体标准写法
  • hasTranslation()方法能有效避免因术语无对应翻译而抛出的异常,你可以根据业务需求修改else分支的处理逻辑(比如返回空字符串、默认提示文本等)
  • 如果需要获取特定语言(而非当前语言)的翻译,直接将$language替换为目标语言ID即可,比如$target_lang_id = 'fr';,然后判断$term->hasTranslation($target_lang_id)并获取翻译

内容的提问来源于stack exchange,提问作者Amine.B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 07:45:38