我有一个有两种不同语言的网站。如果单击语言链接按钮,是否可以重定向到其他语言/文件夹中的同一页面? 示例:如果我在注册页面中,当我单击其他语言链接按钮时,我希望被重定向到另一个语言/文件夹中的同一页面。
语言的主要链接在母版页中。
这可能吗?
答案 0 :(得分:1)
如果我理解正确,您正在使用子文件夹来管理您的文化。
因此,您需要例外~/en/Default.aspx
和~/fr/Default.aspx
。
如果是这种情况,你可以使用这段代码。
//For exemple: /en/Default.aspx
string currentURL = HttpContext.Current.Request.Url.AbsolutePath;
//Manage different part of the URL
string[] urlParts = currentURL.Split(new string[] {"/"},StringSplitOptions.RemoveEmptyEntries);
//Remove the old culture code
IEnumerable<string> invariantUrlParts = urlParts.Skip(1);
//Rebuild the URL
string newUrl = String.Format("~/{0}/{1}", "fr", String.Join("/", invariantUrlParts));
//Redirect to ~/fr/Default.aspx
Response.Redirect(newUrl);
修改强>
如果你是单行的粉丝:
Response.Redirect(HttpContext.Current.Request.Url.AbsolutePath
.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries)
.Skip(1)
.Aggregate(String.Format("~/{0}", "fr"), (i, j) => i + "/" + j));
答案 1 :(得分:1)
假设您有一个包含所有语言的下拉列表,并且在选择时,您希望以所选语言加载相同的页面...
并假设您知道正在加载的当前语言(例如,在会话变量中),您可以:
作为下拉列表:
<select id="langSelector" onchange="changeCountry(this.value);">
<option value="en">English</option>
<option value="es">Spanish</option>
<option value="fr">French</option>
</select>
在javascript中:
var currentLanguage = "en";
// for example in ASP.NET Webforms
// var currentLanguage = "<%= Session["currentLanguage"] %>";
function changeCountry(selectedLanguage) {
var preLang = '/' + currentLanguage + '/',
newLang = '/' + selectedLanguage + '/';
document.location = document.location.pathname.replace(preLangig, newLang);
}
说明:
在javascript document.location.pathname
中将显示协议和域名之后的完整路径,如果您有一个简单的/en/
,则可以将其替换为/fr/
并再次加载其余内容。< / p>
要成为失败证明,您需要忽略此案replace
,因此En
或eN
也可以转换为fr
。
因为你会使用这个:
function changeCountry(selectedLanguage) {
var newLang = '/' + selectedLanguage + '/';
document.location =
document.location.pathname.replace(
/\/<%= Session["currentLanguage"].ToString().ToLower() %>\//i,
newLang);
}
所以你会:
.replace(/\/<%= Session["currentLanguage"].ToString().ToLower() %>\//i, newLang);