Я пытаюсь настроить маршрутизацию для своего многоязычного веб-сайта. Моя цель - перенаправить пользователя на основе его языка (который уже обнаружен).
Это мой текущий незавершенный код:
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
языка en
/foo/bar
: нет перенаправленияnl
request /foo/bar
: перенаправление на /nl/foo/bar
Мой текущий код работает только в том случае, если запрошенный путь /
или /:lang
, но не для таких маршрутов, как /home
или /nl/home
. Я не вижу, как это может быть достигнуто с помощью выражения. Любая помощь будет высоко ценится!
Обратите внимание, что я уже настроил все остальное, например, определение языка, логику перевода, представления и т.д. Я только спрашиваю о маршрутизации.
Если вы знаете все языковые идентификаторы, которые необходимо заранее поддерживать, это должно работать:
api.get('/(:lang(en|nl)/)?*', ( req, res, next ) => {