如何在事件上切换本地资源文件
本文关键字:资源 源文件 事件 | 更新日期: 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();