我正在开发一个使用两种语言的网站,我需要更改网址以包含所选网址 我真正需要的是
1-选择当前网址
2-检查它是否包含任何语言代码
3-如果代码不存在则附加代码或将代码更改为所选代码(如果存在)
例如:
http://localhost:11767/Home/resultMain?model=1&&type=1
以上链接适用于英语,因为它是默认语言,当用户点击es语言时,它应该是
http://localhost:11767/es/Home/resultMain?model=1&&type=1
答案 0 :(得分:1)
您可以借助a元素解析URL,然后替换所需的部分并重新构建URL:
function addReplaceLangCode(url, langCode) {
var a = document.createElement('a');
a.href = document.getElementById('url').value; // or document.location.href;
var paths = a.pathname.split('/');
paths.shift();
if(paths[0].length == 2) {
paths[0] = langCode;
}else{
paths.unshift(langCode);
}
return a.protocol + '//' +
a.host + '/' + paths.join('/') +
(a.search != '' ? a.search : '') +
(a.hash != '' ? a.hash : '');
}
function onClickReplace() {
document.getElementById('result').innerHTML = addReplaceLangCode( document.location.href, 'es');
}
URL : <input type="text" id="url" style="width:400px" value="http://localhost:11767/Home/resultMain?model=1&&type=1"><input type="button" value="Replace" onclick="onClickReplace()"><br />
Result: <span id="result"></span>
答案 1 :(得分:0)
我不知道是不是这个,你想要什么。但JavaScript可以使用对象“位置”获取URL。特别是location.pathname
对您有用。您可以在location.pathname
上应用reg-exp来检查网址是否包含/es/
,如果是,则将网站通过适当的Ajax请求翻译到您的后端。
但通常我建议使用你后端的路由。我认为最好的解决方案 - 使用http标头通知服务器首选语言。
https://www.w3.org/International/questions/qa-accept-lang-locales
答案 2 :(得分:0)
基于@Bulnet Vural上面的回答,我编写了以下代码,因为我需要切换进出网址的语言路径。
var getOtherLanguageLocation = function (currentUrl, languagePath) {
// based on https://stackoverflow.com/a/42176588/1378980
var anchorTag = document.createElement('a');
anchorTag.href = currentUrl;
var paths = anchorTag.pathname.split("/");
// remove all the empty items so we don't get double slash when joining later.
var paths = paths.filter(function (e) { return e !== '' })
// the language will be at index 1 of the paths
if (paths.length > 0 && paths[0].toLowerCase() == languagePath) {
// remove the language prefix
paths.splice(0, 1);
} else {
// add the language prefix
paths.unshift(languagePath);
}
return anchorTag.protocol + '//' +
anchorTag.host + '/' + paths.join('/') +
anchorTag.search + anchorTag.hash;
};