Next.js NextJS I18下一个NextJS本地化路线

Next.js NextJS I18下一个NextJS本地化路线,next.js,i18next,Next.js,I18next,我已经为我的NextJS网站完全实现了next-i18next。一切都按其应有的方式运行: | src/app | -- pages | -- post.js | -- category.js 使用i18next中间件自动检测语言 使用“语言选择”按钮更改语言 仅加载相关名称空间等的翻译 但是,我想本地化路由名称,以便它们反映set语言 我了解如何使用next routes来实现这一点,而这种交流尤其有用: 在该示例中,路线设置如下: routes.add('

我已经为我的NextJS网站完全实现了next-i18next。一切都按其应有的方式运行:

| src/app
   | -- pages
       | -- post.js
       | -- category.js
使用i18next中间件自动检测语言 使用“语言选择”按钮更改语言 仅加载相关名称空间等的翻译 但是,我想本地化路由名称,以便它们反映set语言

我了解如何使用next routes来实现这一点,而这种交流尤其有用:

在该示例中,路线设置如下:

routes.add('en-home', '/', 'index')
routes.add('de-home', '/de', 'index')
routes.add('en-test', '/test', 'test')
routes.add('de-test', '/de/prufung', 'test')
我尝试使用以下模式作为示例,从下一个路由实现路由和链接:

从i18n.language获取当前语言 根据语言集设置链接url 然而,这是行不通的

我注意到在引用的线程中,@samuelg0rd0n评论说他创建了一个自定义链接组件

请有人能告诉我如何根据网站设置的语言更改所有路线吗


谢谢

我强烈建议您尝试一个官方的Next.js示例:

Next.js-命名路由示例下一个路由 但我发现它需要一个额外的服务器,如果我们将我们的应用程序结构定制为我自己的项目示例,它也会失败:

| src/app
   | -- pages
       | -- post.js
       | -- category.js
   | -- server.js (for routes)

| src/functions
   | -- index.js (lambda function for server-side)
如果我运行下一个src/app,它将失败,并出现以下错误:

错误:>找不到“pages”目录。请在项目根目录下创建一个 在findPagesDir/home/paneladm/projects/paneladm dev/travel website/node_modules/next/dist/lib/find pages dir.js:3:170 在new DevServer/home/paneladm/projects/paneladm dev/travel website/node_modules/next/dist/server/next dev server.js:1:3491 在createServer/home/paneladm/projects/paneladm dev/travel website/node_modules/next/dist/server/next.js:2:105 反对。档案

工具书类
嗨,保罗,欢迎来到StackOverflow!我刚刚给你发了一个专门的例子。我希望它能有所帮助。@FrancisRodrigues你能给我发一个同样的例子吗?我也面临同样的问题,需要实现自定义链接,可以使用routes.js和i18ln.js。您找到解决方案了吗?你能分享一下吗?非常感谢。
| src/app
   | -- pages
       | -- post.js
       | -- category.js
   | -- server.js (for routes)

| src/functions
   | -- index.js (lambda function for server-side)
const { routes } = require('./routes');

...

experimental: {
    rewrites() {
      const rewrites = [];

      for (const route of routes) {
        if (route.pattern !== route.page) {
          rewrites.push({
            source: route.pattern,
            destination: route.page,
          });
        }
      }

      return rewrites;
    }
  },
| src/app
   | -- pages
       | -- post.js
       | -- category.js