如何处理 Next.js 中的多个翻译 URL 路由(域路由)?

How to handle multiple translated URL routes in Next.js (domain routing)?

我有一个多语言网络应用程序,我正在重构它以使用 Next.js。

问题是我有几个页面不在任何特定文件夹下,它们根据页面语言有不同的路径。

国际化是基于域的。每个国家/地区都有一个域。

例如:

/about-us          // ENGLISH
/sobre-nosotros    // SPANISH

/privacy           // ENGLISH
/privacidad        // SPANISH

/contact           // ENGLISH
/contacto          // SPANISH

/products          // ENGLISH
/productos         // SPANISH

我什至如何在 Next.js 中路由类似的东西?

到目前为止我想到的唯一方法就是不翻译每个国家/地区的路径。我只会使用英语 slug。因此,每个国家/地区的隐私页面都将在 /privacy 上。关于页面将始终显示在 /about 上,依此类推。这是可行的,但我想如果没有翻译的 slug,我会失去一些 SEO 点。我想,一个可行但糟糕的想法是为每条翻译后的路线添加一个文件。喜欢:about-us.jssobre-nosotros.js

还有别的办法吗?在这种情况下,最佳做法是什么?

我会post我自己的答案和想法在这里,让我们看看是否有人对此有更好的答案。

这些是我的项目要求:

  • 多个国家/地区的网站
  • 相同的网站结构(布局、UI 等)
  • 为了 SEO,每个国家都应该有自己的 CC-TLD。品牌名称也不是全球性的。它因国家/地区而异。
  • 除了页面内容翻译外,某些页面还需要翻译 URL 别名。喜欢 US_DOMAIN.com/about-usES_DOMAIN/sobre-nosotros。具有 /blog 等通用术语的页面在每个国家/地区都可以相同。
  • 每个国家都有自己的数据库数据。比如:美国网站有自己的商品数据库,ES有自己的,等等。共享数据库是可以的,但是每个网站会使用不同的文档集合。

尽管在一个项目中维护所有网站的代码会非常好,但我想如果我将它分成多个项目会更容易(并且最终更易于维护)。每个国家我都会有一个项目。

Next.js 让我们可以轻松地做到以下几点:

  • 选项 1:使用相同的域并使用子文件夹进行翻译。像:
    • example.com/es/sobre-nosotros
    • example.com/us/about-us
  • 选项 2:使用不同的域,但对应该相同的页面使用相同的 slug。像:
    • example.com/about
    • ejemplo.es/about

但是当您尝试执行以下操作时,事情会变得非常棘手:

  • 选项 3:使用不同的域和翻译的 slug
    • example.com/about-us
    • example.com/sobre-nosotros

最后,如果您的网站在不同国家(比如我的)差异太大,也许您应该将其拆分为不同的项目。否则,使用上面提到的选项 1 或 2。