如何更改影响所有页面的系统文化(以编程方式)? 我看到this线程。
但我希望使用此代码在我的登录页面中更改文化。
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)
但我们的文字和标签仍然是英文。 (我有英语资源和波斯语资源。)
答案 0 :(得分:4)
有关所有文化的列表,请参阅the documentation for the CultureInfo
class
关于您的其他问题,您可以使用语言代码作为其值保存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 */
});
}
(小方注释:我已将_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();
}
答案 1 :(得分:2)
将以下行添加到您的web.config
的<system.web>
部分
<globalization culture="es" uiCulture="es"/>