У нас есть stati c сайт, использующий Gatsby и содержательный. Теперь мы хотим поддерживать многоязычность с локализованным контентом от contentful. Я могу заполнить запрос graghql:
query frontpageTeaser($lang: String) {
contentfulFrontpage(node_locale: { eq: "zh-CN" }) {
myArticalContent
...
}
}
Этот запрос может загружать китайский контент из contentful и Engli sh, если он изменен на node_locale: { eq: "en-US" }
.
Теперь Проблема в следующем: мы хотим поддерживать переключение языка, чтобы при переключении языка graphql загружал соответствующий локализованный контент.
Мы используем gatsby-plugin-react-i18next , который имеет следующую замечательную функцию:
Поддержка многоязычных URL-адресов в одностраничном компоненте. Вам не нужно создавать отдельные страницы, такие как pages / en / index. js или pages / es / index. js.
Страницы, такие как http://localhost: 8000 / zh-CN / загружает китайский из локального /locales/zh-CN/translation.json
, но как загрузить локализованный контент при переключении языка?
Graphql, похоже, предоставляет запрос страницы , поэтому я добавил gatsby-node.js
:
exports.createPages = async function ({ actions, graphql }) {
actions.createPage({
path: '/zh-CN/',
component: require.resolve(`./src/pages/index.js`),
context: { lang: 'zh-CN' },
})
}
И используйте это на странице:
export const query = graphql`
query frontpageTeaser($lang: String) {
contentfulFrontpage(node_locale: { eq: $lang }) {
myArticalContent
}
}
`
Но он всегда возвращает en
. Пожалуйста, помогите :). Спасибо.