How to call controller with express.js routing?
app.get('*', function(req, res, next) {
var regExp = /^\/([a-z]{2})(\/|$)/gi,
exec = regExp.exec(req.url);
exec = exec != null ? exec[1] : undefined;
if(exec == undefined) {
// add language prefix to link
}
else {
i18n.setLocale(exec);
// add language prefix to link
}
next();
});
If I open the page /about I need to get url like this: http://example.com/en/about. How I can do it and how to display call 'about' controller?
app.get('/about', function(req, res) {
console.log('Here is about');
res.send('Hello, World');
});
Not suitable: app.get('(en|de|ru)/about', ...)
Thanks in advance.
You could do something like
app.get('/:language/about', function(req, res) {
var language = req.params.language;
i18n.setLocale(language);
});
For multiple routes you could maybe do this
controllers.js
module.exports = {
about: function(req, res) {
res.send('about');
}
}
app.js
var controllers = require('./controllers');
app.all('/:language/:controller', function(req, res) {
i18n.setLocale(req.params.language);
controllers[req.params.controller](req, res);
});