如何使用graphql获取Drupal节点的特定翻译

时间:2019-06-11 20:21:30

标签: drupal graphql multilingual gatsby

我正在使用drupal 8gatsbygraphql构建一个无头页面。

如何查询页面翻译?

query MyQuery {
  allNodePage {
    nodes {
      body {
        value
      }
    }
  }
}

我想用一种特定的语言来获得这个allNodePage.nodes.body.value

编辑: 这是graphiql allNodePage实体。

enter image description here

编辑_1:

根据this issue,您只能通过修改/fr/jsonapi/node/page中的api主机路由(drupal 8)来查询翻译。

但是在gatsby-source-drupal插件中,api主机路由在运行时不可更改。

Edit_2:

我尝试翻译页面节点。默认语言是英语。我想请求drupal中存在的德语翻译。

2 个答案:

答案 0 :(得分:1)

经过一些试验,我发现它还不能与Drupal JSON API一起使用,但是我让它与Drupal GraphQL模块一起使用。可以与Gatsby和gatsby-source-graphql一起使用,而不是与gatsby-source-drupal一起使用。查询如下所示:

{
  nodeQuery(
    filter: {
      conditions:[
        {operator: IN, field: "type", value: ["my_node_type"]},
        {operator: EQUAL, field: "langcode", value: "de"},
      ]
    }
  ) {
    entities {
      ...on NodeMyNodeType {
        entityTranslation(language: DE) {
          entityLabel
        }
      }
    }
  }
}

答案 1 :(得分:0)

如果您想按allNodePage过滤langcode,可以这样操作:

    query MyQuery {
      allNodePage(filter: {langcode: {eq: "fr_FR"}}) {
        nodes {
          body {
            value
          }
        }
      }
    }

当然,您可以使用变量代替“ fr_FR”,而不是对其进行硬编码

query MyQuery($lang: String!) {
      allNodePage(filter: {link: {eq: $lang:}}) {
        nodes {
          body {
            value
          }
        }
      }
    }