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