我正在尝试为我的多语言网站设置路由。我的目标是根据用户的语言(已经检测到)重定向用户。
这是我目前尚未完成的代码:
app.get('/(:lang)?', (req, res, next) => {
const urlLang = req.params.lang || 'en'; // English is default
const userLang = 'nl'; // Will be detected
if (urlLang !== userLang) {
// Wrong URL
res.redirect(userLang + req.url);
} else next();
});
在此示例中,我尝试从网址(urlLang
)中减去所请求的语言。如果该语言与用户语言不匹配,则应将其重定向到正确的URL。
我想要实现的一些例子:
en
的用户请求/
:无重定向nl
的用户请求/
:重定向到/nl
en
的用户请求/foo/bar
:无重定向nl
的用户请求/foo/bar
:重定向到/nl/foo/bar
我的当前代码仅在请求的路径为/
或/:lang
时有效,但不适用于/home
或/nl/home
等路由。我不知道如何通过快递实现这一目标。任何帮助将不胜感激!
请注意我已经设置了其他所有内容,例如语言检测,翻译逻辑,视图等。我只询问路由。
答案 0 :(得分:1)
如果您知道需要提前支持的所有语言标识符,那么这应该有效:
api.get('/(:lang(en|nl)/)?*', ( req, res, next ) => {