在我的 asp.net 解决方案中,我通过 VS 中的 Tools -> Generate local resource 菜单生成了一个本地资源文件,并在其中更改了一些控件的文本。我有一个下拉列表,其中包含我希望能够切换到的语言(例如 Default.en.aspx.resx)。我该如何编码?如何引用与当前活动的资源文件不同的资源文件?
问问题
1300 次
2 回答
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 中的文化特定资源。
于 2013-01-11T13:07:41.683 回答
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();
于 2013-01-11T14:30:39.067 回答