【发布时间】:2015-07-28 12:51:21
【问题描述】:
我创建了两个资源文件,“SOSResources.en.resx”和“SOSResources.pt.resx”。
在我的 aspx 页面中,当我尝试使用以下这些文件中的字符串时,我从标准英语 resx 文件中获取它。
asp:Literal ID="btnDelete_Text" Text="<%$Resources:SOSResources, String1%>"
但是,如果我尝试在下面的代码隐藏中获取相同的字符串,我会从葡萄牙语语言文件(这是用户语言)中获取它。
btnEdit_Text.Text = Resources.SOSResources.String1
以下代码用于处理此过程。如果此信息不可用,则应该选择用户的语言或英语。但是,只有来自代码隐藏的示例才能获取用户语言。 aspx 页面中的示例总是从英文 resx 文件中获取字符串。
protected override void InitializeCulture()
{
string lang;
if (ActiveUser != null && ActiveUser.Language != null)
{
lang = ActiveUser.Language;
}
else
{
lang = "en";
}
Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang);
base.InitializeCulture();
}
有人可以帮助我吗?我如何确保在这两种情况下页面都会从适当的语言中获取字符串?我也不确定这是否是在 .NET 上执行全球化的正确方法。
【问题讨论】:
-
传递给
CultureInfo的lang变量的值是多少? -
它是ActiveUser.Language的值:根据用户的不同,例如“en”、“pt”或“es”的语言代码。或者,如果数据库中不存在此信息,请使用“en”(系统的标准语言)。
标签: c# asp.net globalization resx