如何在mvc5中将文化设置为全局

时间:2014-06-05 12:25:11

标签: c# asp.net razor asp.net-mvc-5 visual-studio-2013

我正在使用资源文件在我的Web应用程序中切换语言,该应用程序是在mvc5中构建的

在索引文件中,它读取我设置的文化值。

我从layout.cshtml调用set culture方法并使用以下代码调用它的值。

@{
Layout = "~/Views/Shared/_Layout.cshtml";

if (!Request["dropdown"].IsEmpty())
{
    Culture = UICulture = Request["dropdown"];
}

}

在索引页面中语言正确加载但是当我从那里进入下一页时,它加载默认语言德语,但资源仅从英语资源文件中读取。

请帮我解决这个问题。

3 个答案:

答案 0 :(得分:15)

用于全局设置我建议您将以下行添加到global.asax.cs文件中:(在此示例中,文化设置为以色列希伯来语)

        protected void Application_Start()
    {
        //The culture value determines the results of culture-dependent functions, such as the date, number, and currency (NIS symbol)
        System.Globalization.CultureInfo.DefaultThreadCurrentCulture = new System.Globalization.CultureInfo("he-il");
        //System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = new System.Globalization.CultureInfo("he-il");


    }

答案 1 :(得分:11)

web.config中,我在内部评论了以下内容,对我来说效果很好。

<configuration>
   <system.web>
    <globalization culture="en-US" uiCulture="en-US" />  <!-- this only -->
   </system.web>
</configuration>

答案 2 :(得分:2)

您必须在某处保留有关当前文化的信息(我建议使用Cookie)并将线程文化设置为此Cookie值(如果存在) - 最好是Application_BeginRequest的{​​{1}}。

Global.asax