如何使用next.js和next-i18next本地化路由?

时间:2019-06-03 11:10:20

标签: next.js i18next

更改语言时,我需要更改路线的名称。例如,我有一条路线/en/career,但是当我更改为捷克语时,我需要一条路线/cs/kariera。基本上,我需要将URL本地化。现在,当我使用/en/career并将语言更改为cs时,我得到了/cs/career。该页面根本不应该存在,当我在服务器上呈现该页面时,我正确地得到了404。我可以使用next-i18next软件包执行类似的操作吗?如果可以,怎么办?

我发现这个软件包https://github.com/vonschau/next-routes-with-locale可以满足我的需要,但显然不再维护,在next.js 8下也无法使用。

2 个答案:

答案 0 :(得分:1)

我最终要做的是使用next-routes包并为每个页面定义特定的路由,例如:

module.exports = routes()
    .add('en-career-listing', '/en/career/:listing', 'career/listing')
    .add('cs-career-listing', '/cs/kariera/:listing', 'career/listing')
    .add('en-career', '/en/career', 'career')
    .add('cs-career', '/cs/kariera', 'career')
    .add('en-our-story', '/en/our-story', 'our-story')
    .add('cs-our-story', '/cs/nas-pribeh', 'our-story')

我还必须基于Link创建一个自定义next/link组件,并在其中手动将语言添加到URL。

答案 1 :(得分:0)

next-i18next支持此functionality,它称为语言环境子路径。

您需要配置:new NextI18Next({ localeSubpaths: 'foreign' }),然后使用NextI18Next实例在其上的Link&Router,而不是 next / router