我创建了两个资源文件“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上执行全球化的正确方法。
答案 0 :(得分:0)
经过数小时的研究后,我发现这个例子对我有用:
https://msdn.microsoft.com/en-us/library/bz9tc508(v=vs.85).aspx
除此之外,还有一个问题在尝试将代码移到Site:Master或者PageBase.cs时帮助了我:
ASP.NET Web Page Globalization & Localization in Master Page C# 3.0