我通过以下方法为es-ES实现了具有单个MVC视图的RequestLocalization(注意:此代码仅压缩到最相关的部分):
Startup.cs
public void ConfigureServices(IServiceCollection services) { services.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix,opts => { opts.ResourcesPath = "Resources"; }); } public void Configure(IApplicationBuilder app,IHostingEnvironment env,ILoggerFactory loggerFactory) { var english = "en-US"; var englishRequestCulture = new RequestCulture(culture: english,uiCulture: english); var supportedCultures = new List<CultureInfo> { new CultureInfo("en-US"),new CultureInfo("es-ES") }; var options = new RequestLocalizationoptions { DefaultRequestCulture = englishRequestCulture,SupportedCultures = supportedCultures,SupportedUICultures = supportedCultures }; app.UseRequestLocalization(options); app.UseMvc(); }
当将culture = en-US或culture = es-ES作为查询字符串参数传递时,这非常有效.我的期望是,当没有提供文化时,默认文化应该是en-US.但是,当我不提供culture参数时,我的视图默认为es-ES.我已确认所有其他本地化提供商也默认为en-US.
我还应该注意到,我尝试通过ConfigureServices()进行本地化,但是根本无法使其正常运行:
services.Configure<RequestLocalizationoptions>( options => { var supportedCultures = new List<CultureInfo> { new CultureInfo("en-US"),new CultureInfo("es-ES") }; options.DefaultRequestCulture = new RequestCulture(culture: "en-US",uiCulture: "en-US"); options.SupportedCultures = supportedCultures; options.SupportedUICultures = supportedCultures; });