我有一个 asp.net core 项目,我想将默认语言设置为 nl-BE。由于某种原因,它总是采用 en-US 语言
请参阅下面的代码(ps:我创建了自己的 ApplicationLocalizer,它从数据库获取资源 => 工作正常)。
启动.cs
public void ConfigureServices(IServiceCollection services)
{
//Add MVC
services.AddMvc()
.AddViewLocalization();
//Localization factory
services.AddSingleton<IStringLocalizerFactory, ApplicationLocalizerFactory>();
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, ApplicationDbContext context)
{
...
//Localization
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("nl-BE")
};
var options = new RequestLocalizationOptions {
DefaultRequestCulture = new RequestCulture("nl-BE"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
};
app.UseRequestLocalization(options);
...
}
控制器一个
public string Index()
{
return CultureInfo.CurrentCulture.Name;
}
这段代码总是返回en-US
有人可以帮我解决这个问题吗?
经过几个小时的搜索解决方案但没有结果后,我进行了大量调试并意识到中间件服务是在一个order正如声明中所宣布的配置(IApplicationBuilder 应用程序...)。因此调用了本地化中间件after控制器操作已执行。
当我移动app.UseRequestLocalization(选项)在一开始的调用中,我在控制器操作中正确本地化了 Thread/CultureInfo。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory,
IApplicationLifetime appLifetime)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
// THIS HAS TO BE A VERY FIRST MIDDLEWARE REGISTRATION
SetUpLocalization(app);
app.UseCors("AllowAllOrigins");
app.UseMvc();
appLifetime.ApplicationStopped.Register(() => ApplicationContainer.Dispose());
}
private static void SetUpLocalization(IApplicationBuilder app)
{
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("pl-PL"),
new CultureInfo("pl")
};
var options = new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("en-US", "en-US"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
};
// Configure the Localization middleware
app.UseRequestLocalization(options);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)