我正在尝试为我的多语言网站设置路由。我的目标是根据用户的语言(已检测到)重定向用户。
这是我当前未完成的代码:
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();
});
在此示例中,我尝试从 url (urlLang
) 中减去请求的语言。如果该语言与用户语言不匹配,则应重定向到正确的 URL。
我想要实现的目标的一些示例:
- 使用语言
en
的用户请求/
:无重定向 - 使用
nl
语言的用户请求/
:重定向到/nl
- 语言为
en
的用户请求/foo/bar
:无重定向 - 使用
nl
语言的用户请求/foo/bar
:重定向到/nl/foo/bar
我当前的代码仅在请求的路径为 /
或 /:lang
时有效,但不适用于 /home
或 等路由>/nl/home
。我不明白如何通过 express 来实现这一点。任何帮助将不胜感激!
请注意,我已经设置了其他所有内容,例如语言检测、翻译逻辑、 View 等。我只是询问路由。
最佳答案
如果您知道需要提前支持的所有语言标识符,那么这应该可行:
api.get('/(:lang(en|nl)/)?*', ( req, res, next ) => {
关于javascript - 快速路由 - 根据区域设置重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44500138/