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

本文关键字:资源 源文件 事件 | 更新日期: 2023-09-27 17:52:44

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

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

如果你想为每个用户设置不同的语言,包括日期格式等,你可以设置当前线程的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);
}

看到页面。

要更改特定的值,您需要使用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();