GraphQL 的多语言支持

Multi-language support with GraphQL

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

- src - data - en - text1.json - text2.json ... - de - text1.json - text2.json ... - es - text1.json - text2.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 来源也可能对您有所帮助。