我创建了一个ASP.NET MVC应用程序,并为项目中的about.aspx页面添加了2个资源文件。它看起来像这样:
然后我修改了About.aspx页面如下:
<asp:Content ID="aboutContent" ContentPlaceHolderID="MainContent" runat="server">
<h2><%= GetLocalResourceObject ("About")%></h2>
<p>
<%= GetLocalResourceObject ("PutContentHere")%>
</p>
</asp:Content>
我尝试在changing the firefox locale之后运行about页面到hi-IN但它仍然显示默认文本(英文)。请问你能发现问题吗?
答案 0 :(得分:3)
CurrentCulture
和CurrentUICulture
不会根据浏览器报告的内容自动更改。您需要指定:
protected override void OnInit(EventArgs e)
{
try
{
System.Threading.Thread.CurrentThread.CurrentUICulture =
CultureInfo.GetCultureInfo(Request.UserLanguages[0]);
System.Threading.Thread.CurrentThread.CurrentCulture =
System.Threading.Thread.CurrentThread.CurrentUICulture;
}
catch (Exception ex)
{
// handle the exception
}
base.OnInit(e);
}
您应该注意,您可以选择的某些语言(例如“en”)在尝试将其分配给Thread.CurrentCulture
时会导致异常,因为它不允许所谓的“中性”文化。简而言之,中立文化只能识别一种语言,而不能识别地理区域。您可以在the documentation for the CultureInfo
class中了解更多相关信息。