【发布时间】:2011-06-02 16:44:02
【问题描述】:
我正在使用 Visual Studio 2008 和 ASP.NET 构建一个 Web 应用程序。我的大部分网页都基于一个母版页。该母版页包含三个按钮链接,用作语言切换; Click 事件处理程序如下所示:
protected void lbuLangEN_Click(object sender, EventArgs e)
{
this.SwitchLanguage(string.Empty);
}
protected void lbuLangES_Click(object sender, EventArgs e)
{
this.SwitchLanguage("es");
}
那我有我的私有方法SwitchLanguage:
private void SwitchLanguage(string culture)
{
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(culture);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture);
}
据我了解,这应该足以使基于我的母版页的页面表现出本地化行为,即根据文化从适当的本地 resx 文件中获取资源。但是,它不起作用。它们总是以西班牙语显示,这是我浏览器的默认语言。我在SwitchLanguage的入口和出口处设置了一些跟踪消息,显然当前线程没有改变它的文化信息:每次调用SwitchLanguage时,当前线程的文化都是“es-ES”,不管我的代码刚刚设置了什么。
我的代码或我采用的方法有什么问题吗?谢谢。
【问题讨论】:
-
问题是你只是改变当前线程的语言,每个请求都是它自己的线程。
-
@vcsjones:我明白了。所以我需要存储语言设置并以某种方式为每个请求设置它,对吗?有什么常用的技术吗?
-
标签: asp.net localization master-pages cultureinfo