使用 UseRequestLocalization 强制所有请求使用单一文化
Force all requests to use a single culture using UseRequestLocalization
如何在 ASP.NET Core RC 2 中设置固定文化?
我的 Startup.cs
:
var options = new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("pt-BR", "pt-BR"),
SupportedCultures = new[] { new CultureInfo("pt-BR") },
SupportedUICultures = new[] { new CultureInfo("pt-BR") }
};
options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(async context => await Task.FromResult(new ProviderCultureResult("pt-BR", "pt-BR"))));
app.UseRequestLocalization(options);
一些请求仍在收到 en-US
请求本地化意味着,对于每个请求,框架将尝试使用请求者首选的本地化。您想要的是将应用程序的默认文化更改为 始终使用 您的语言环境,无论用户在其客户端浏览器中设置了什么。为此你可以使用一个小的中间件。
在您的 Startup.cs 文件的最顶部添加以下内容:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("pt-BR");
CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("pt-BR");
app.UseMiddleware<MyRequestLocalizationMiddleware>();
...
}
并在项目的某处添加中间件:
using Microsoft.AspNetCore.Http;
using System.Globalization;
using System.Threading.Tasks;
namespace MyNamespace
{
public class MyRequestLocalizationMiddleware
{
private readonly RequestDelegate _next;
public MyRequestLocalizationMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
var defaultCulture = new CultureInfo("pt-BR");
SetCurrentCulture(defaultCulture, defaultCulture);
await _next(context);
}
private void SetCurrentCulture(CultureInfo culture, CultureInfo uiCulture)
{
CultureInfo.CurrentCulture = new CultureInfo(culture.Name);
}
}
}
如何在 ASP.NET Core RC 2 中设置固定文化?
我的 Startup.cs
:
var options = new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("pt-BR", "pt-BR"),
SupportedCultures = new[] { new CultureInfo("pt-BR") },
SupportedUICultures = new[] { new CultureInfo("pt-BR") }
};
options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(async context => await Task.FromResult(new ProviderCultureResult("pt-BR", "pt-BR"))));
app.UseRequestLocalization(options);
一些请求仍在收到 en-US
请求本地化意味着,对于每个请求,框架将尝试使用请求者首选的本地化。您想要的是将应用程序的默认文化更改为 始终使用 您的语言环境,无论用户在其客户端浏览器中设置了什么。为此你可以使用一个小的中间件。
在您的 Startup.cs 文件的最顶部添加以下内容:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("pt-BR");
CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("pt-BR");
app.UseMiddleware<MyRequestLocalizationMiddleware>();
...
}
并在项目的某处添加中间件:
using Microsoft.AspNetCore.Http;
using System.Globalization;
using System.Threading.Tasks;
namespace MyNamespace
{
public class MyRequestLocalizationMiddleware
{
private readonly RequestDelegate _next;
public MyRequestLocalizationMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
var defaultCulture = new CultureInfo("pt-BR");
SetCurrentCulture(defaultCulture, defaultCulture);
await _next(context);
}
private void SetCurrentCulture(CultureInfo culture, CultureInfo uiCulture)
{
CultureInfo.CurrentCulture = new CultureInfo(culture.Name);
}
}
}