我正在使用 deufakt i18n 本地化插件翻译网页,但我想为我的 /blog
关闭本地化路线。
基本上我想要的是这样的:mypage.com/es/anotherRoute
-> mypage.com/blog
(es
或任何其他语言代码消失)
但这不是我想要实现的主要目标。最大的问题是我无法构建下一个应用程序。
错误基本上是 post
在 [slug]
预渲染时未定义。虽然它不应该是,因为如果我 console.log 它,它就在那里。
[蛞蝓]
import ErrorPage from "next/error";
import { getStrapiURL, getPageData, getBlogPost } from "utils/api";
import Sections from "@/components/sections";
import Seo from "@/components/elements/seo";
import { useRouter } from "next/dist/client/router";
import BlogPost from "@/components/blog/blogPost";
const BlogPage = ({ post, allPosts }) => {
const router = useRouter();
if (router.isFallback) {
return <div className="container">Loading...</div>;
}
return (
<>
{/* Add meta tags for SEO*/}
<Seo metadata={post.metadata} />
{/* Display content sections */}
<BlogPost {...{ post, allPosts }} />
</>
);
};
export async function getStaticPaths() {
const blogPosts = await (await fetch(getStrapiURL("/blog-posts"))).json();
const paths = blogPosts.map((page) => {
return {
params: { slug: page.slug },
};
});
return { paths, fallback: true };
}
export async function getStaticProps({ params, preview = null }) {
const pageData = await getBlogPost(params.slug);
const allPosts = await (await fetch(getStrapiURL("/blog-posts"))).json();
if (pageData == null) {
// Giving the page no props will trigger a 404 page
return { props: {} };
}
return {
props: {
post: pageData,
allPosts,
},
revalidate: 1,
};
}
export default BlogPage;
我的 pages
文件夹:pages
├── [[...slug]].js
├── _app.js
├── _document.js
└── blog
├── [slug].js
└── index.js
最佳答案
有ignoreRoutes
位于 i18n
的属性(property)插件配置
i18n: {
defaultLocale: 'en',
locales: availableLocalesMap,
ignoreRoutes: [
'/blog/',
'/public/'
],
},
UPD:它不再有效,所以现在我们可以随意解决这个问题@neuroine 在评论中提供的 github 讨论链接可能很有用:
https://github.com/vercel/next.js/discussions/28554
关于javascript - 禁用路由的本地化 - Next.js 中的 i18n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68223386/