如何在事件上切换本地资源文件

时间:2013-01-11 12:54:31

标签: c# asp.net markup

在我的asp.net解决方案中,我通过工具生成了本地资源文件 - >在VS中生成本地资源菜单,在其中我更改了一些控件的文本。我有一个下拉列表,其中包含我希望能够切换到的语言(例如Default.en.aspx.resx)。我该如何编码呢?如何引用与当前活动文件不同的资源文件?

2 个答案:

答案 0 :(得分:3)

如果您希望每个用户拥有不同的语言,包括日期格式等,您可以设置当前线程的CurrentUICulture以匹配所请求的语言。

例如,在有人从下拉列表中选择语言后,您可以将其存储在会话中,然后覆盖页面上的InitializeCulture:

protected override void InitializeCulture()
{
    string language = Session["language"].ToString(); // e.g. en-GB
    System.Threading.Thread.CurrentThread.CurrentUICulture =
        System.Globalization.CultureInfo.GetCultureInfo(language);
}

请参阅Page.InitializeCulture中的ResourceManager和ResourceManager以及特定于文化的资源。

答案 1 :(得分:0)

要更改特定值,您需要使用HttpContext.GetLocalResourceObject方法来获取所需的文本。像这样:

string cultureCode = MyDropDown.SelectedValue;

MyLabel.Text = HttpContext.GetLocalResourceObject(
    this.AppRelativeVirtualPath, // virtual path to current page
    "MyLabelText", // key in resx
    System.Globalization.CultureInfo.GetCultureInfo(cultureCode) // language
).ToString();