2012-11-06 29 views
0

我有一個網站,它的翻譯語言如下。檢測第一個目錄,如果它不是英文的

英文,德文,西班牙文,法文和意大利文。

我有一個選擇框,選擇它應該改變位置爲翻譯的語言。

我遇到的主要問題是搞清楚如何在url中沒有經過翻譯的目錄名稱的情況下獲取url。

到目前爲止,我有

var curURL = $('#flagsectionurl').attr('value'); 
var n=curURL.split("/");   
console.log(n[1]); 

輸入#flasgectionurl拿起當前頁面的URL。所以,如果我在看

domain.com/de/index

中的console.log將顯示「德」

當選擇了選擇框它目前執行以下操作

var chosenCountry = data.selectedData.value; 
window.location = "/"+chosenCountry+$('#flagsectionurl').attr('value'); 

什麼是最好的方法來改變目錄,同時保留當前頁面?由於此方法不起作用,因爲它最終會轉到domain.com/de/de/index

回答

0

您正在向URL添加新國家,但未刪除當前的國家/地區。

從變量chosenCountry開始,然後附加已包含國家/地區的當前網址$('#flagsectionurl').attr('value')

您想要替換URL的國家/地區部分,同時保留其餘部分。要做到這一點,你可以做以下(根據你的代碼中顯示的網址的結構登錄到控制檯):

var new_url = $('#flagsectionurl').attr('value'); 
new_url = url.split("/"); 
new_url[1] = data.selectedData.value; 
window.location = new_url.join("/"); 

編輯:

,因爲這個問題,你曾提出地方對於英語而言,它不使用上述URL約定,您需要跟蹤當前的語言(包括如果是英語),如果您尚未使用。然後,如果當前選擇是英語,並且您正在更換爲其他語言,則需要在分解數組後向其中添加新項目。如果是從其他語言爲英語去,你將需要在位置1

var new_lang = data.selectedData.value; 
var new_url = $('#flagsectionurl').attr('value'); 
new_url = url.split("/"); 
if (cur_lang == 'en') { 
    new_url.splice(1,0,new_lang); 
} 
else if (new_lang == 'en') { 
    new_url.splice(1,1); 
} 
else { 
    new_url[1] = new_lang; 
} 
window.location = new_url.join("/"); 

刪除數組中的項目上面的代碼工作過的假設當前的語言和新的語言可以是不一樣的,你如果你還沒有,就需要檢查一下。

+0

考慮到這一點,它應該可以工作,但如果我選擇英文版時該怎麼辦?它應該轉到根目錄,因爲英文不在其自己的目錄中 – ngplayground

+0

請參閱已編輯的答案。 –

相關問題