【发布时间】:2013-04-26 18:35:19
【问题描述】:
我有一个网站,其页面名为 buystuff.aspx。我创建了两个本地资源:buystuff.aspx.resx 和 buystuff.aspx.da-dk.resx。
这很好用,如果我使用 da-DK 设置进入网站,我会得到那个版本,如果我输入其他任何东西,我会得到默认版本。
但是,我想要的是以编程方式设置它。当用户输入buystuff.aspx时,他们应该被强制进入英语(en-US)版本,如果他们输入buystuff.aspx?language=da,他们应该被强制进入da-dk版本。
以下代码不能解决问题:
private void SetupLanguage()
{
if (!string.IsNullOrEmpty(CurrentLanguage))
{
if (CurrentLanguage == "da")
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("da-DK");
return;
}
}
Culture = "en-US";
UICulture = "en-US";
}
我也尝试了以下方法,但没有成功:
private void SetupLanguage()
{
if (!string.IsNullOrEmpty(CurrentLanguage))
{
if (CurrentLanguage == "da")
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("da-DK");
return;
}
}
CultureInfo info = CultureInfo.CreateSpecificCulture("en-US");
Thread.CurrentThread.CurrentUICulture = info;
Thread.CurrentThread.CurrentCulture = info;
}
在调试模式下,我可以判断代码是否正常运行。但是,当加载buybtc.aspx(并且我的CurrentLanguage 变量是string.empty)时,它仍然从buystuff.aspx.da-dk.resx 加载资源。
有什么想法吗?
【问题讨论】:
-
你为什么只在一个地方设置
CurrentUICulture? -
@Oded ,你是什么意思? :-)
-
在您的第二个代码示例中,您有
Thread.CurrentThread.CurrentUICulture = info;。你永远不会在其他任何地方设置CurrentUICulture。您应该同时设置它(和CurrentCulture到想要的文化。 -
我可能很笨或者很慢,但是为什么要设置 CurrentUICulture 几次呢?在 Page_Load 中一次还不够吗?好像没看懂,能详细点吗? :)