2012-11-06 3 views
0

웹 사이트에서 다음과 같은 번역 된 언어가 있습니다.영어가 아닌 경우 첫 번째 디렉토리를 검색합니다.

영어, 독일어, 스페인어, 프랑스어 및 이탈리아어.

선택 상자를 선택하면 위치가 번역 된 언어로 변경됩니다.

내가 겪고있는 주요 문제는 URL에 번역 된 디렉토리 이름없이 URL을 가져 오는 방법을 알아내는 것입니다.

지금까지 내가 입력 #의 flasgectionurl 현재 페이지의 URL을 집어

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

있습니다. 내가

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을 추가합니다.

나머지는 그대로 유지하면서 URL의 국가 부분을 대체하려고합니다.

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

편집 :

문제의이 제기 때문에이 작업을 수행하려면 당신은 (콘솔에 기록하여 코드와 같이 당신의 URL의 구조를 기반으로) 다음을 수행 할 수 영어의 경우 위 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

편집 된 답변보기. –

관련 문제