Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 改变制度文化_.net_Asp.net_Resources - Fatal编程技术网

.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()期间使用该值。这样,不同的用户可以拥有不同的文化。