2016-08-17 5 views
0

英語の連絡先ページの場合は/ en/contact、ドイツ語の連絡先ページの場合は/ de/contactなどのハイパーリンクの言語識別子を使用する多言語Webサイトがあります。言語パラメータをjadeリンクに渡す

たとえば、インデックスページから連絡先ページにリンクすると、ハイパーリンクの言語部分をどのように「渡す」ことができますか?/en/indexまたはon/de/indexになっているかどうかによって、ハイパーリンクは/ en/contactまたは/ de/contactを指す必要があります。

私はExpress + Jadeを使用しています。 両方の言語用に1つのjadeテンプレートがあり、ユーザーが/ enまたは/ deページにあるかどうかによってリンクを動的に設定する必要があります。

ありがとうございます!

答えて

1

上にあると仮定すると、英語インデックスページにユーザーを送ることができます。ミドルウェア機能を使用して要求を検査し、言語を引き出し、それをテンプレートで使用できる変数として設定します。あなたは、グローバルなミドルウェアの多くを使用することができるかもしれませんが、この例では、単一のルート上にそれを示しています

a(href="/#{userLang}/contact) Contact Page

:上記のコードは次のようになりますテンプレート内の場所へのリンクになったら

app.use('/:userLang/contact', i8n, users); 

function i8n(req, res, next) { 
    var supportedLanguages = ['en', 'de']; 
    var defaultLang = 'en'; 
    var pathLang = req.params.userLang; 

    // default to en if a user trys a language that isn't supported 
    // another(possibly better) option would be to 404 or 301 to the en version 
    res.locals.userLang = (supportedLanguages.indexOf(pathLang) > -1) 
          ? req.params.userLang : defaultLang; 
    next(); 
} 

+0

これは素晴らしい、ありがとう! – Ruehri

0

コンタクトページであることは、あなたは、これは私が考えることができる最も簡単な例であるあなたは、英語のコンタクトページ

a(href="/en/index") 
+0

まあありがとうございます...ここでの問題は、ユーザーが現在/ enまたは/ deページにいるかどうかによってリンクを動的に設定することです。私は、動的にリンクを設定する必要がある唯一の玉テンプレートがあることをいくつかの情報を追加しました – Ruehri

関連する問題