1

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

4

2 回答 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 回答