asp.net mvc 在哪里设置默认文化?

Posted

技术标签:

【中文标题】asp.net mvc 在哪里设置默认文化?【英文标题】:asp.net mvc where to set default culture? 【发布时间】:2015-09-16 07:51:29 【问题描述】:

对于多语言的asp.net mvc 网站。

我应该在哪里将线程的文化设置为默认语言(在我的情况下是 tr-TR),此外,如果它不存在,我需要将其保存在 cookie 中。在 Application_Start() 或其他?

我有多个站点(域),所以我需要更改站点特定的默认语言。

 example.com must set default culture to tr-TR
 example2.com must set default culture to en-US

【问题讨论】:

【参考方案1】:

尝试在 web.config 中设置

<configuration>
    <system.web>
        <globalization uiCulture="en-GB" culture="en-GB" />
    </system.web>
</configuration>

这是一种更通用的设置文化的方式...

【讨论】:

为了使其更通用,您可以使用它来自动检测浏览器的文化: 我需要根据站点(域)设置默认文化,那么在 webconfig 中设置文化是否正确?我更新了上面的问题。 我不是很确定,但是有一种简单的方法可以在 Routeconfig 类 foreach 中添加路由(在 routes.Cast().Where(route => route.GetType( ) == typeof(MultiLingualRoute))) route.Url = "language/" + route.Url; route.Defaults.Add("language", "YOUR-DEFAULT"); 这可能会给你一个提示。【参考方案2】:

您可以在 Application_AcquireRequestState 中设置区域性:

protected void Application_AcquireRequestState(object sender, EventArgs e)

    // A Cookie
    string cookie = HttpContext.Current.Request.Cookies["culture"].Value;

    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(cookie);
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(cookie);

你也可以访问这个link

【讨论】:

以上是关于asp.net mvc 在哪里设置默认文化?的主要内容,如果未能解决你的问题,请参考以下文章

asp.net mvc 设置数字格式默认十进制千位分隔符

ASP.NET MVC 5 中的 DefaultThreadCurrentCulture 完整请求

如何在 Asp.Net Core 中为日期绑定设置文化?

将值传递回控制器时的 ASP.NET MVC 日期时间文化问题

如何在 ASP.NET CORE 5.0 MVC 中将登录设置为默认路由

使用默认的 ASP.Net MVC 设置,如何使用 Microsoft 帐户登录?