2017-01-07 7 views
0

私は単純なウェブサイトを構築しており、リンクを翻訳したいと考えています。ノードとi18nで複数の言語ルートを使用するにはどうすればよいですか?

例:

  • について-US/- Proposのドnousが

現在、私は国際化と言語を設定するために、あなたがユーザーをリダイレクトする必要があることに気付きました

app.get('/fr', (req, res) => { 
    i18n.setLocale('fr'); 
    res.cookie('i18n', 'fr'); 
    res.redirect('/'); 
}); 

しかし、ユーザーが次のURLに直接アクセスするとどうなりますか?

app.get(['/about-us', '/a-propos-de-nous'], (req, res) => { 
    // How do I set the proper locale here? I can't do any redirect otherwise 
    // I'll be caught in a redirect loop. 
    res.render('about-us'); 
}); 

答えて

0

あなたはreq.urlから要求されたパスを取得することができ、あなたはそれがあった1チェックし、それに応じて言語を設定することができます。

app.get(['/about-us', '/a-propos-de-nous'], (req, res) => { 
    if(req.url === '/about-us') { 
    i18n.setLocale('en'); 
    res.cookie('i18n', 'en'); 
    } else if(req.url === '/a-propos-de-nous') { 
    i18n.setLocale('fr'); 
    res.cookie('i18n', 'fr'); 
    } 

    res.render('about-us'); 
}); 

また、それが少し楽要求から言語を抽出することになるだろうこれ、example.com/fr/a-propos-de-nousのようなパスを前に付けることができます。

+0

私が記事で説明したように、i18nは言語を設定した後にリダイレクトする必要があります(少なくとも、それが動作するようにすることができます)。私はこの解決策を試しましたが、残念ながら失敗しました。 – justinledouxweb

関連する問題