В моих файлах разметки, созданных Netlify CMS, у меня есть объекты, содержащие переводы на 2 языка.
Я создаю 2 страницы для каждого файла разметки, передавая язык в контекст, чтобы я мог использовать его как переменная в моем запросе GraphQL. Для ссылок и другого контента, который изменяется в зависимости от языка, я должен «синхронизировать c» язык из реквизита в переменную, хранящуюся в localStorage.
Хотя это должно работать, это кажется неприятным решением. Есть ли лучший способ сделать это с помощью Gatsby + Netlify?
Также, если это кого-то интересует, вот мой gatsby-node.js
:
const path = require(`path`)
const { createFilePath } = require(`gatsby-source-filesystem`)
exports.onCreateNode = ({ node, getNode, actions }) => {
const { createNodeField } = actions
if (node.internal.type === `MarkdownRemark`) {
const slug = '/projects' + createFilePath({ node, getNode, basePath: `projects` })
createNodeField({
node,
name: `slug`,
value: slug,
})
}
}
exports.createPages = async ({ graphql, actions }) => {
const { createPage } = actions
const result = await graphql(`
query {
allMarkdownRemark {
edges {
node {
fields {
slug
}
}
}
}
}
`)
let languages = ['en', 'cz']
result.data.allMarkdownRemark.edges.forEach(({ node }) => {
languages.forEach((lang) => {
createPage({
path: '/' + lang + node.fields.slug,
component: path.resolve(`./src/templates/projectTemplate.js`),
context: {
slug: node.fields.slug,
language: lang,
},
})
})
})
}