言語切り替えがあるプロジェクトで作業しています。したがって、現在のURLをピックアップし、jsonオブジェクトをループし、言語ペアを返します。Javascript jsonサイトマップでの部分ワイルドカードの一致
ので
/en/cookie-policy
/de/cookie-richtlinie
問題私が今直面するつもりです - ワイルドカードを受け付けている - IDマッチングペア
ようなので、代わりにJSONにハードコーディング可能なすべてのIDの
/en/virtual-conference-room/1
/de/virtuellier-konferenz-raum/1
私はJSONでワイルドカードの種類を配置する
- 言語ペアを転写が、所望のid
012を保持しますそう
/en/virtual-conference-room/[:num]
/de/virtuellier-konferenz-raum/[:num]
、私は言語切替/ペアマッチを行う - .. ID 1、234、1000年などのために、私は考えて
をワイルドカード結果を生み出すそのほかの場合は作成する場合 - その時点でワイルドカードマッチペアを表現することができますが、どこから始めるべきかはわかりません。
function getUrl(pairUrl, currentLng, enMenu, deMenu, obj) {
for (let k in obj) {
if (!obj.hasOwnProperty(k)) continue
if (obj[k].link === pairUrl) {
if (currentLng === 'de') {
return enMenu[k].link // get en link equivlant
} else {
return deMenu[k].link // get de link equivlant
}
} else if (paritalmatch) {
//finds a wild card match and allows a pair match
}
else {
if (!obj[k].hasOwnProperty('children') || obj[k].children.length <= 0) continue;
var ret = getUrl(pairUrl, currentLng, enMenu[k].children, deMenu[k].children, obj[k].children);
if(typeof ret != 'undefined') return ret;
}
}
}
function getLanguagePair(currentLng, pairUrl) {
// 'find url in json tree'
var enMenu = linkTreeObject.langs[1].lines.menu
var deMenu = linkTreeObject.langs[0].lines.menu
let obj = {}
// find position in tree
if (currentLng === 'de') {
obj = deMenu
} else {
obj = enMenu
}
return getUrl(pairUrl, currentLng, enMenu, deMenu, obj)
}
//works
console.log(getLanguagePair("en", "/en/how-it-works"))
console.log(getLanguagePair("en", "/en/virtual-conference-room/1"))
console.log(getLanguagePair("en", "/en/virtual-conference-room/2"))
あなたはgetUrl関数にifsのスタックを持っています - これはif、elseif、else条件よりも優れていますか? http://jsfiddle.net/0ht35rpb/84/ –
- あなたが/ en/service/[:num]/borderlineのようなURLを持っていた場合、これは機能しますか –
これは違いはありません。次のIFには達しません。あなたがIF ... ELSEを使うように更新したいのであればOKです。ワイルドカードはリンクの最後にある必要はないので、/ en/service/[:num]/borderlineのようなURLのために動作します –