2

我创建了一个 ASP.NET MVC 应用程序,并在项目中为 about.aspx 页面添加了 2 个资源文件。它看起来像这样:

alt 文件夹结构

然后我修改了 About.aspx 页面如下:

<asp:Content ID="aboutContent" ContentPlaceHolderID="MainContent" runat="server">
    <h2><%= GetLocalResourceObject ("About")%></h2>
    <p>
        <%= GetLocalResourceObject ("PutContentHere")%>
    </p>
</asp:Content>

在将 firefox 语言环境更改为 hi-IN后,我尝试运行 about 页面,但它仍然显示默认文本(英文)。请问你能发现问题吗?

4

1 回答 1

3

CurrentCultureCurrentUICulture不会根据浏览器报告的内容自动更改。您需要指定:

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,因为它不允许所谓的“中性”文化。简而言之,中性文化是一种只识别一种语言而不识别地理区域的文化。您可以在该类的文档中CultureInfo阅读更多相关信息。

于 2009-07-18T09:00:20.723 回答