如何创建express graphql应用程序?

如何创建express graphql应用程序?,express,internationalization,graphql,Express,Internationalization,Graphql,我正在寻找一个graphql响应的例子:我不想在每个查询中都使用这种语言,但我只找到了非常稀疏的文档,说明如何将这种语言放到上下文中,以便进行解析 我正在使用node和graphql-express,非常感谢使用这种组合或任何其他组合的每个提示 不要深入graphql,而是要确保您可以使用->或更具体的express中间件来解决问题,正如@jamuhl所建议的,下面是一个使用i18next将所选语言放置在请求上,然后使用上下文将其传递给graphql的示例: 首先设置i18next: 下一步是在

我正在寻找一个graphql响应的例子:我不想在每个查询中都使用这种语言,但我只找到了非常稀疏的文档,说明如何将这种语言放到上下文中,以便进行解析


我正在使用node和graphql-express,非常感谢使用这种组合或任何其他组合的每个提示

不要深入graphql,而是要确保您可以使用->或更具体的express中间件来解决问题,正如@jamuhl所建议的,下面是一个使用i18next将所选语言放置在请求上,然后使用上下文将其传递给graphql的示例:

首先设置i18next:

下一步是在设置graphql时将其传递给上下文对象(通常,上下文对象会更复杂):

现在,您可以从解析器中的上下文中选择所选语言:

var root = {
    ... 
    yourApiCall: async (query, context, schema) => {
      let language = context.language || "en"
      ...
      return {localizedStrings: ...}
    }

如果不显式地设置上下文,则上下文被设置为请求:您可以从那里派生它,但我仍然认为显式地控制上下文是更好的方式。请检查,此解决方案是否适用于您的graphql版本-此处最困难的部分是找到调用的正确签名,因为graphql在匹配配置参数方面过于聪明,从而更容易进行开箱设置-因此大多数示例缺少查询、上下文和,这种方法正常工作所需的模式。

是的,我就是这么做的,我只是在寻找一个集成的示例:我使用i18next express和graphql作为api,而react i18next作为前端,因为返回的lang总是
en-US
,所以它似乎没有相互通信,而是读取它的localhost端口。你有什么想法吗?啊,nvm,我不需要api上的i18n这是一个很好的教程,可能很有用:
app.use('/api/v1'
        ,graphqlHTTP((req) =>{
          return {
            schema: schema.schema,
            rootValue: schema.root,
            graphiql: false,
            pretty: true,
            context: {language: req.language}
          }
        }));
var root = {
    ... 
    yourApiCall: async (query, context, schema) => {
      let language = context.language || "en"
      ...
      return {localizedStrings: ...}
    }