graphql - GraphQL 的多语言支持

标签 graphql gatsby

我正在尝试使用 GatsbyJS 静态站点生成器来重写我的站点。 用户可以通过 UI 更改语言。 有几个文件夹包含本地化文本数据:

- src - 数据 - zh - 文本1.json - 文本2.json ... -德 - 文本1.json - 文本2.json ... - es - 文本1.json - 文本2.json ...

如何根据当前语言获取数据? GraphQL 查询应该是什么样子?

最佳答案

您可以使用社区gatsby-plugin-i18n .

您可以找到使用 markdownRemark 配置的示例:

// Add to gatsby-config.js
plugins: [
  {
      resolve: 'gatsby-plugin-i18n',
      options: {        
        langKeyDefault: 'en',
        useLangKeyLayout: false,
        markdownRemark: {
          postPage: 'src/templates/blog-post.js',
          query: `
          {
            allMarkdownRemark {
                edges {
                  node {
                    fields {
                      slug,
                      langKey,
                    }
                  }
                }
             }
          }
          `
        }
      }
    }
]

您可能希望根据 langKey 值过滤 graphql 查询:

allMarkdownRemark(filter: { fields: { langKey: { eq: "en" } } }) {
  edges {
    node {
      fields {
        slug,
        langKey,
        #your data
      }
    }
  }
}

查看showcase资源也可以帮助您。

关于graphql - GraphQL 的多语言支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49294243/

相关文章:

sql - 基于 Graphql 嵌套游标的分页、解析器和 SQL 查询

reactjs - GraphQL错误: Syntax Error: Cannot parse the unexpected character "\u00A0"

arrays - GraphQL 过滤器内容丰富的帖子

javascript - 如何在容器类组件中使用 GraphQL 查询

reactjs - React-apollo 中的 data.refetch() 函数如何工作

sql - 在 SQL 表中有一个专用的计数字段是否可取?

vue.js - 为什么 Apollo/GraphQL 返回一个不可扩展的对象?

reactjs - 基于 ULR Gatsby React 的隐藏/显示元素

javascript - 如何将亚马逊关联广告小部件插入网站

gatsby - 使用Gatsby的Intercom插件集成Intercom