我陷入了一个愚蠢的问题:
如何与optional区域设置参数?
那就是我的意思:
例如,我有首页 and contacts,这是路线:
app.get('/', frontpage.get);
app.get('/contacts', contacts.get);
现在我正在尝试向我的网站添加本地化
app.all('/:lang?*', language.all); -> detect and set locale
app.get('/:lang?', frontpage.get);
app.get('/:lang?/contacts', contacts.get);
唯一的问题是当我不在 URL 中使用 lang-parameter 时:
mysite.com/contacts
因为 Express 使用“联系人”作为语言参数。
(+我不喜欢这个复制粘贴的:lang?
)
我想,我只是走错了路。
如何在 Express 中使用 URL 中的区域设置参数?
PS:我不想使用子域de.mysite.com
或查询字符串mysite.com?lang=de
。我想要这个变体mysite.com/de
大多数模块使用Accept-Language https://github.com/mozilla/i18n-abide所以我找不到任何使用您可能可以使用的路径的路径。因此,您需要定义自己的中间件,该中间件在其他所有事情之前进行初始化。快递的Router
对你的用例并没有真正的帮助。
app.use(function(req, res, next){
var match = req.url.match(/^\/([A-Z]{2})([\/\?].*)?$/i);
if (match){
req.lang = match[1];
req.url = match[2] || '/';
}
next();
});
现在你可以使用req.lang
在你的路由或其他中间件中配置你的翻译逻辑,由于我们重写了 URL,后面的逻辑将不知道有语言参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)