我正在一个具有多种语言功能的asp.net网站上工作。目前,我的代码可以与语言切换器一起使用,并且可以显示具有所选语言的表单内容,但是如果用户在部分填写表单后决定切换语言,我的代码将刷新页面,并且表单数据会丢失。>
我尝试使用Cookie设置更改的语言。
语言控制器代码-
public ActionResult Change(String Language)
{
if(Language != null)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Language);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(Language);
}
HttpCookie cookie = new HttpCookie("Language");
cookie.Value = Language;
Response.Cookies.Add(cookie);
return View("Index");
}
索引视图-
<li>@Html.ActionLink("English", "Change", "Language", new { Language = "en"}, null)</li>
<li>@Html.ActionLink("Françe", "Change", "Language", new { Language = "fr" }, null)</li>
<li>@Html.ActionLink("spanish", "Change", "Language", new { Language = "es"}, null)</li>
Global.asax.cs
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies["Language"];
if(cookie != null && cookie.Value != null)
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cookie.Value);
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(cookie.Value);
}
else
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en");
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en");
}
}
是否可以在不刷新页面的情况下切换语言和页面内容?
答案 0 :(得分:0)
您所说的是客户端翻译。这意味着当您更改语言时,翻译资源必须出现在页面上。 您可以使用一些自定义javascript来做到这一点[不是推荐的方式]。
这导致了一个问题,资源将来自哪里?例如,如果您有诸如“我的英语项目”之类的内容,系统将如何知道要翻译成什么内容?
一种方法是让浏览器即时翻译它。例如,使用Google翻译。 Here is a way to do that。