Как сделать мультиязычный сайт stati c, используя gatsby-plugin-intl и gatsby markdown? - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь создать сайт c, используя gatsby, который поддерживает два языка, мой wi sh - весь контент будет обрабатываться файлами уценки.

Я начал с плагина gatsby -intl используя это https://www.gatsbyjs.org/packages/gatsby-plugin-intl/ -работает отлично.

но я не могу понять, как использовать уценку, я думаю, потому что gatsby-plugin-intl меняет пути. когда я пытаюсь go на localhost: 8000 / blog, он меняется на localhost: 8000 / en / blog и выдает ошибку, что в шаблоне, что запрос graphql вернул ноль.

Я понимаю проблему, но Я не могу понять, как решить это. Я думаю, мне нужно сделать 2 файла уценок по одному для каждого языка и изменить gatsby- node.js, чтобы правильно управлять путями, но не уверен, как это сделать. Единственная информация, которую я нашел в Интернете, была https://hiddentao.com/archives/2019/05/07/building-a-multilingual-static-site-with-gatsby, но после выполнения его шагов я не работал

будет признателен за любую помощь

my gatsby- node.js:

const path = require(`path`)

exports.createPages = async ({ actions, graphql, reporter }) => {
  const { createPage } = actions

  const blogPostTemplate = path.resolve(`src/templates/post.js`)

  const result = await graphql(`
    {
      allMarkdownRemark {
        edges {
          node {
            frontmatter {
              path
            }
          }
        }
      }
    }
  `)

  // Handle errors
  if (result.errors) {
    reporter.panicOnBuild(`Error while running GraphQL query.`)
    return
  }


  result.data.allMarkdownRemark.edges.forEach(({ node }) => {
    console.log("path:")
    console.log(node.frontmatter.path)
    createPage({
      path: node.frontmatter.path,
      component: blogPostTemplate,
      context: {}, // additional data can be passed via context
    })
  })
}

мой шаблон:

// src/templates/post.js
import React from "react"
import { graphql } from "gatsby"

export default function Template({
  // this prop will be injected by the GraphQL query below.
    data, }) 
    {
    console.log(data)
    const { markdownRemark } = data // data.markdownRemark holds your post data
    const { frontmatter, html } = markdownRemark
    return (
      <div>
          <h1>{frontmatter.title}</h1>
      </div>
    )
  }

  //$path which is a strings
  export const pageQuery = graphql`
    query ($path: String!) {
      markdownRemark(frontmatter: { path: { eq: $path } }) {
        html
        frontmatter {
          path
          title
        }
      }
    }
  `
  // )
  // .then(res => {
  //   console.log("result")
  //   // console.log(pageQuery.data)
  // })

и мой blog.md:

---
path: "/blog"
date: "2019-05-04"
title: "My first blog post"
---


this is the my markdown
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...