gia*_*ial 2 routing localization routes node.js express
我遇到了一个愚蠢的问题:如何使用可选的 locale参数?
那就是我的意思:
例如,我有首页和联系人,这里是路线:
app.get('/', frontpage.get);
app.get('/contacts', contacts.get);
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试将本地化添加到我的网站
app.all('/:lang?*', language.all); -> detect and set locale
app.get('/:lang?', frontpage.get);
app.get('/:lang?/contacts', contacts.get);
Run Code Online (Sandbox Code Playgroud)
唯一的问题是当我不在URL中使用lang-parameter时:
mysite.com/contacts
Run Code Online (Sandbox Code Playgroud)
因为Express使用"联系人"作为语言参数.(+我不喜欢这种复制粘贴:lang?)
我想,我只是采取了错误的方式.
如何在Express中使用URL中的locale参数?
PS:我不想使用子域名de.mysite.com或查询字符串mysite.com?lang=de.我想要这个变种mysite.com/de
log*_*yth 10
大多数模块使用,Accept-Language所以我找不到任何使用你可能使用的路径.因此,您需要定义自己的中间件,在其他所有内容之前进行初始化.Express's 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();
});
Run Code Online (Sandbox Code Playgroud)
现在您可以req.lang在路由或其他中间件中使用来配置您的翻译逻辑,因为我们已经重写了URL,后来的逻辑将不会知道有一个语言参数.
| 归档时间: |
|
| 查看次数: |
1876 次 |
| 最近记录: |