如何处理 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.js
、sobre-nosotros.js
等
还有别的办法吗?在这种情况下,最佳做法是什么?
我会post我自己的答案和想法在这里,让我们看看是否有人对此有更好的答案。
这些是我的项目要求:
- 多个国家/地区的网站
- 相同的网站结构(布局、UI 等)
- 为了 SEO,每个国家都应该有自己的 CC-TLD。品牌名称也不是全球性的。它因国家/地区而异。
- 除了页面内容翻译外,某些页面还需要翻译 URL 别名。喜欢
US_DOMAIN.com/about-us
和 ES_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。
我有一个多语言网络应用程序,我正在重构它以使用 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.js
、sobre-nosotros.js
等
还有别的办法吗?在这种情况下,最佳做法是什么?
我会post我自己的答案和想法在这里,让我们看看是否有人对此有更好的答案。
这些是我的项目要求:
- 多个国家/地区的网站
- 相同的网站结构(布局、UI 等)
- 为了 SEO,每个国家都应该有自己的 CC-TLD。品牌名称也不是全球性的。它因国家/地区而异。
- 除了页面内容翻译外,某些页面还需要翻译 URL 别名。喜欢
US_DOMAIN.com/about-us
和ES_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。