.net 改变制度文化
如何更改影响所有页面的系统区域性(以编程方式)? 我看见了线 但是我想用这些代码在我的登录页面中更改区域性.net 改变制度文化,.net,asp.net,resources,.net,Asp.net,Resources,如何更改影响所有页面的系统区域性(以编程方式)? 我看见了线 但是我想用这些代码在我的登录页面中更改区域性 protected void btnChangeLanguage(object sender, EventArgs e) { Thread.CurrentThread.CurrentCulture = new CultureInfo("es"); Thread.CurrentThread.CurrentUICulture = new CultureInfo("es"); }
protected void btnChangeLanguage(object sender, EventArgs e)
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("es");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("es");
}
Thread.CurrentThread.CurrentUICulture = new CultureInfo("fa-IR")
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("fa-IR")
我的文化因顶级代码而改变。
我用这个密码查过了
MsgBox("Current Culture is " + CultureInfo.CurrentCulture.EnglishName)
但我们的文字和标签仍然是英文的。(我有英语资源和波斯语资源。)有关所有文化的列表,请参阅 关于您的另一个问题,您可以使用语言代码作为其值保存cookie,并在重写的
InitializeCulture
中读取它,如下所示:
用户单击按钮后,立即使用语言代码作为其值设置cookie:
protected void btnChangeLanguage_Click(object sender, EventArgs e)
{
Response.Cookies.Add(new HttpCookie("language") {
Value="es",
Expires=DateTime.Now.AddDays(30) /* A sample timestamp */
});
}
(小旁注:我在处理程序的名称后添加了一个\u Click
,因为它可能会导致与定义中按钮的名称冲突)
在页面生命周期的早期阶段调用InitializeCulture
方法后,立即读取cookie:
protected override void InitializeCulture()
{
var cookie = Request.Cookies["language"];
if (cookie != null)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cookie.Value);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(cookie.Value);
}
base.InitializeCulture();
}
将以下行添加到web.config的
部分
<globalization culture="es" uiCulture="es"/>
谢谢,还有其他问题吗?@shaahin,不客气。亲爱的abatishchev,关于语言设置的第一个问题,我已经用示例解决方案更新了我的答案。谢谢。:)@shaahin不客气!答案的第一个版本正确地显示了代码,但在我更改了一些文本后,它不知何故被丢弃了。奇怪的事:)@abatishchev谢谢你纠正它。谢谢。如何以编程方式实现它?您应该重写基于页面的类的InitCulture方法。实际上,它是InitializeCulture()方法。您可以在登录会话变量后保存区域性代码,然后在InitializeCulture()期间使用该值。这样,不同的用户可以拥有不同的文化。