2012-11-06 27 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

请参阅已编辑的答案。 –

相关问题