禁用路由本地化 - Next.js 中的 i18n

Fil*_*lip 8 javascript internationalization next.js

我正在使用 deufakt i18n 本地化插件来翻译网页,但我想关闭我的/blog路线的本地化。

\n

基本上我想要的是这样的:

\n

mypage.com/es/anotherRoute-> mypage.com/blog(该es或任何其他语言代码消失)

\n

但这不是我想要实现的主要目标。最大的问题是我无法构建下一个应用程序。

\n

该错误基本上是在预渲染时未定义postin 。[slug]尽管它不应该是这样,因为如果我console.log它,它就在那里。

\n

[子弹]

\n
import ErrorPage from "next/error";\nimport { getStrapiURL, getPageData, getBlogPost } from "utils/api";\nimport Sections from "@/components/sections";\nimport Seo from "@/components/elements/seo";\nimport { useRouter } from "next/dist/client/router";\nimport BlogPost from "@/components/blog/blogPost";\n\nconst BlogPage = ({ post, allPosts }) => {\n  const router = useRouter();\n  if (router.isFallback) {\n    return <div className="container">Loading...</div>;\n  }\n  return (\n    <>\n      {/* Add meta tags for SEO*/}\n      <Seo metadata={post.metadata} />\n      {/* Display content sections */}\n      <BlogPost {...{ post, allPosts }} />\n    </>\n  );\n};\n\nexport async function getStaticPaths() {\n  const blogPosts = await (await fetch(getStrapiURL("/blog-posts"))).json();\n  const paths = blogPosts.map((page) => {\n    return {\n      params: { slug: page.slug },\n    };\n  });\n\n  return { paths, fallback: true };\n}\n\nexport async function getStaticProps({ params, preview = null }) {\n\n  const pageData = await getBlogPost(params.slug);\n  const allPosts = await (await fetch(getStrapiURL("/blog-posts"))).json();\n\n  if (pageData == null) {\n    // Giving the page no props will trigger a 404 page\n    return { props: {} };\n  }\n\n  return {\n    props: {\n      post: pageData,\n      allPosts,\n    },\n    revalidate: 1,\n  };\n}\n\nexport default BlogPage;\n
Run Code Online (Sandbox Code Playgroud)\n

我的pages文件夹:

\n
pages\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 [[...slug]].js\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 _app.js\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 _document.js\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 blog\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 [slug].js\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 index.js\n
Run Code Online (Sandbox Code Playgroud)\n

Nik*_*zur 7

插件配置ignoreRoutes中有属性i18n

i18n: {
    defaultLocale: 'en',
    locales: availableLocalesMap,
    ignoreRoutes: [
        '/blog/',
        '/public/'
    ],
},
Run Code Online (Sandbox Code Playgroud)

UPD:它不再有效,所以现在我们可以随意解决这个问题

@neuroine 在评论中提供的 github 讨论链接可能有用:

https://github.com/vercel/next.js/discussions/28554