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

标签 javascript internationalization next.js

我正在使用 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/

相关文章:

javascript - 如何在没有抗锯齿的情况下拉伸(stretch)图像

javascript - 多个 setTimeout 的

spring-boot - 如何在 spring-boot 应用程序中外部化 i18n 属性文件

android - React Native - 如何本地化应用名称?

reactjs - 如何在 Next.js 上设置健康检查的端点?

node.js - 如果我正在开发或生产中,如何告诉 firebase? (对于 firebase 函数沙箱/实时开关)

javascript - fs.appendFile 没有按顺序追加数据?

javascript - 来自同级容器的 FancyBox 标题

c++ - Qt 翻译 lupdate 和命名空间

reactjs - Next.js 应用程序在生产中频繁重新加载