需要手动更改 CultureInfo。可以在 Startup.cs 文件的 ConfigureServices 方法中添加以下代码:
services.Configure(options =>
{
var supportedCultures = new List
{
new CultureInfo("en-US"), // 美式英语
new CultureInfo("zh-CN") // 简体中文
};
options.DefaultRequestCulture = new RequestCulture(culture: "zh-CN", uiCulture: "zh-CN");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(context =>
{
var userLangs = context.Request.Headers["Accept-Language"].ToString();
var culture = CultureInfo.DefaultThreadCurrentCulture;
if (!string.IsNullOrEmpty(userLangs))
{
var userLang = userLangs.Split(',').FirstOrDefault();
if (!string.IsNullOrEmpty(userLang))
{
try
{
culture = new CultureInfo(userLang);
}
catch (CultureNotFoundException)
{
// ignore invalid culture
}
}
}
return Task.FromResult(new ProviderCultureResult(culture.Name));
}));
});
此代码中:
此处还使用了一个 CustomRequestCultureProvider,在请求时根据 "Accept-Language" 请求头的值来确定区域设置。
更多关于如何支持多国语言的内容,请参考 Microsoft 的官方文档。