如何在 next.js 中管理 i18n 路由以使用斜杠而不是破折号

Posted

技术标签:

【中文标题】如何在 next.js 中管理 i18n 路由以使用斜杠而不是破折号【英文标题】:How to manage i18n routing in next.js to use slash instead of dash 【发布时间】:2022-01-06 11:39:58 【问题描述】:

我有一个包含多个国家/地区的网站,每个国家/地区都有多个区域设置 这是我的next-i18next.config.js

module.exports = 
  i18n: 
    defaultLocale: 'en-eg',
    locales: ['en-br', 'en-eg', 'en-ke', 'pt-br', 'pt-eg', 'pt-ke', 'en', 'pt'],
    localeDetection: false,
  ,
  lowerCaseLng: true,
  fallbackLng: 
    'en-br': ['en'],
    'en-eg': ['en'],
    'en-ke': ['en'],
    'pt-br': ['pt'],
    'pt-eg': ['pt'],
    'pt-ke': ['pt'],
  ,
;

想要的行为而不是/language-country/:pathcountry/language/:path 我想知道是否有可能实现?

【问题讨论】:

【参考方案1】:

您可以使用next.config.js 中的rewrites 将所需的URL 格式映射到实际存在的不同目标路径。

//next.config.js

module.exports = 
    async rewrites() 
        return [
            // Add an entry for each locale that needs to be mapped
            
                source: '/br/pt/:path*',
                destination: '/pt-br/:path*'
            ,
            // Other locales rewrites here
        ]
    

【讨论】:

以上是关于如何在 next.js 中管理 i18n 路由以使用斜杠而不是破折号的主要内容,如果未能解决你的问题,请参考以下文章

如何在带有 TypeScript 的 next.config.js 中使用 i18n 和 next/image?

Typescript next.js + i18n 的正确 getServerSideProps 语法

defaultLocale 未在 Next.js i18n 中保留默认语言

如何使用 withFonts() 配置 i18n

如何不在 Next.js 动态路由之间保持状态?

使用 next-translate 和 i18n 测试组件