2017-06-12 14 views
1

多言語Webサイトのルーティングを設定しようとしています。私の目標は、すでに検出されている言語に基づいてユーザーをリダイレクトすることです。エクスプレスルーティング - ロケールに基づいてリダイレクト

これが私の現在の未完成のコードです:私は、URL(urlLang)から要求された言語を減算してみてください。この例では

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にリダイレクトする必要があります。

私が達成しようとしているもののいくつかの例:言語en要求/

  • ユーザー:いいえ言語nl要求/
  • ユーザーをリダイレクトする:言語と/nl
  • ユーザーへのリダイレクトenリクエスト/foo/bar:リダイレクトなし
  • 言語のユーザーnl/foo/barを要求:要求されたパスが/homeまたは/nl/homeのようなルートの/または/:langですが、ない場合は私の現在のコードのみ機能

    /nl/foo/bar

にリダイレクトします。私はこのことが急行でどのように達成できるのか分かりません。どんな助けでも大歓迎です!


など言語検出、変換ロジック、ビュー、のように私は唯一のルーティングについて尋ねています、私はすでに他のすべてを設定しているのでご注意ください。事前にサポートするために必要なすべての言語識別子を知っている場合

答えて

1

、これは動作するはずです:

api.get('/(:lang(en|nl)/)?*', (req, res, next) => { 
関連する問題