Как реализовать маршрут (промежуточное ПО), который будет вызываться при каждом запросе, но в то же время он должен перехватывать необязательный параметр lang
.
Пока что я попробовал код ниже, но он не работает. Скорее всего проблема с сопоставлением пути (/:lang*?
). В приведенном ниже коде lang
параметр не определен:
const SUPPORTED_LOCALES = ['en', 'fr', 'de'];
expressServer.use('/:lang*?', function(req, res, next) {
// check if known locale, if no then fallback to 'en'
const locale = SUPPORTED_LOCALES.includes((req.params.lang)) ? req.params.lang : 'en';
req.locale = locale;
next();
}
Это промежуточное программное обеспечение должно перехватывать абсолютно все запросы, даже только доменное имя (в случае отсутствия языкового стандарта оно будет откатываться на языковой стандарт по умолчанию en
):
example.com
example.com/de/blog/2
example.com/fr
example.com/en
example.com/en/blog/1
example.com/blog/1