<system.web> .net 核心中的全球化
Posted
技术标签:
【中文标题】<system.web> .net 核心中的全球化【英文标题】:<system.web> globalization in .net core 【发布时间】:2016-12-16 02:51:44 【问题描述】:我一直在使用以下设置我以前的应用程序的web.config
。
<system.web>
<globalization culture="en-AU" uiCulture="en-AU" />
</system.web>
现在在我的新 .net 核心项目中,我不知道如何将此设置放入 appsettings.json
文件中。
感谢您的帮助, 尼古拉
【问题讨论】:
【参考方案1】:本地化在Startup class
中配置,可以在整个应用程序中使用。 AddLocalization
方法在ConfigureServices
中用于定义资源和本地化。然后可以在 Configure 方法中使用它。这里可以定义RequestLocalizationOptions
,并使用UseRequestLocalization
方法将其添加到堆栈中。
public void ConfigureServices(IServiceCollection services)
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc()
.AddViewLocalization()
.AddDataAnnotationsLocalization();
services.AddScoped<LanguageActionFilter>();
services.Configure<RequestLocalizationOptions>(
options =>
var supportedCultures = new List<CultureInfo>
new CultureInfo("en-US"),
new CultureInfo("de-CH"),
new CultureInfo("fr-CH"),
new CultureInfo("it-CH")
;
options.DefaultRequestCulture = new RequestCulture(culture: "en-US", uiCulture: "en-US");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
);
【讨论】:
谢谢。 :)【参考方案2】:在ConfigureServices中加入这两行好像有你想要的效果:
public class Startup
public void ConfigureServices(IServiceCollection services)
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-AU");
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-AU");
我尝试了批准的答案:首先它需要一个 LanguageActionFilter 类,它不是标准的 .net 核心类,然后它不能用于使用首选文化而不是系统的简单目的默认文化。
【讨论】:
以上是关于<system.web> .net 核心中的全球化的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core TypeLoadException无法从程序集“System.Web”加载类型“System.Web.PreApplicationStartMethodAttribute”(