在Asp.Net Core中启用基于客户端的文化

Omu*_*Omu 6 asp.net-mvc localization asp.net-core-mvc asp.net-core

默认情况下,在MVC 6中,CultureInfo.CurrentCulture是Windows使用的,而不是浏览器.

在MVC 5中,我可以将其放入web.config:

<globalization culture="auto" uiCulture="auto"/>
Run Code Online (Sandbox Code Playgroud)

这将使得与CultureInfo.CurrentCulture浏览器(Accept-Language标题)指定的相同.

有没有办法配置MVC 6应用程序默认使用浏览器文化?

hai*_*770 3

您需要安装Microsoft.AspNet.Localization NuGet 包并将以下内容添加到您的Startup.cs

public void Configure(IApplicationBuilder app)
{
    app.UseRequestLocalization();
    app.UseMvc();
}
Run Code Online (Sandbox Code Playgroud)

默认情况下,它将注册AcceptLanguageHeaderRequestCultureProvider为文化提供者,这应该相当于旧enableClientBasedCulture设置。

更新:

根据您的评论,由于您使用的是 RC1 版本,因此您必须为该方法提供默认区域性。例如:

app.UseRequestLocalization(new RequestCulture("en"));
Run Code Online (Sandbox Code Playgroud)

  • 对我来说(mvc 6 rc1-final)这个扩展无需安装本地化包即可使用(我尝试安装,没有区别);该扩展还需要至少 1 个参数,所以我尝试了 `app.UseRequestLocalization(new RequestCulture("en"));` 只有将其放在 `app.UseMvc` 之前才有效,并且它会忽略浏览器语言 (2认同)